Oracle分析函数

自己理解的使用背景:

只需要表中或者C#结果集中的一条数据时,往这想!!!!!!

在多表关联的SQL查询中,只需要其中一个表的特定的一条数据,可使用分析函数!!!

普通的聚合函数用group by分组,每个分组返回一个统计值;而分析函数采用partition by 分组,并且每组每行都可以返回一个统计值。

比如用group by分组后,左表是被分组了,但是导致右表的数据可能是随机的,不是想要的那个右表数据,这时候就可以用分析函数采用partition by分组

C#代码中举例:
rownum = Sql.Ext.RowNumber()
        .Over()
        .PartitionBy(p.MITEM_CODE)
        .OrderBy(p.MITEM_CODE)
        .ThenBy(p.MITEM_CODE)
        .ToValue(),
SQL举例:
WITH A AS
 (SELECT P1.ORG_ID,
         P1.EQUIPMENT_CODE,
         P1.EQUIPMENT_NAME,
         P1.AREA_CODE,
         P1.SHIFT_CODE,
         P1.EQUPMENT_OPERATION_STATUS,
         P1.PRE_OPERATION_STATUS,
         P1.STATION_CODE,
         P1.START_STANDBY_TIME,
         P1.START_RUN_TIME,
         P2.WORKSHOP_CODE,
         P2.OCCURRED_TIME AS ABNORMAL_OCCURRENCE_TIME,
         P2.INCIDENT_DETAIL AS ABNORMAL_DETAIL,
         ROW_NUMBER() OVER(PARTITION BY P1.ORG_ID, P1.EQUIPMENT_CODE, P1.EQUIPMENT_NAME, P1.AREA_CODE, P1.SHIFT_CODE, P1.EQUPMENT_OPERATION_STATUS, P1.PRE_OPERATION_STATUS, P1.STATION_CODE, P1.START_STANDBY_TIME, P1.START_RUN_TIME, P2.WORKSHOP_CODE ORDER BY P1.START_STANDBY_TIME - P2.OCCURRED_TIME ASC) AS RN
    FROM FND_EQUPMINET_OPERATION_STATUS P1
   INNER JOIN AD_INCIDENT_LOG P2
      ON (P1.EQUIPMENT_CODE = P2.EQUIPMENT_CODE)
   WHERE P1.PRE_OPERATION_STATUS IN ('1', '4')
     AND P2.EQUIPMENT_TYPE_CODE LIKE '%AUTO%'
     AND P1.START_STANDBY_TIME >= P2.OCCURRED_TIME
     AND P2.OCCURRED_TIME >= P1.START_STANDBY_TIME - INTERVAL '24' HOUR
     AND P1.ORG_ID = 'C03'
     AND P2.WORKSHOP_CODE = '1'
     AND P1.STATION_CODE IN ('KS1')
     AND P1.START_STANDBY_TIME >=
         TO_DATE('2024-03-11 08:00:00', 'yyyy-MM-dd hh24:mi:ss')
     AND P1.START_STANDBY_TIME <=
         TO_DATE('2024-03-11 10:00:00', 'yyyy-MM-dd hh24:mi:ss')
 )
SELECT *
  FROM A
 WHERE RN = 1
 ORDER BY EQUIPMENT_CODE,
          AREA_CODE,
          START_STANDBY_TIME,
          ABNORMAL_OCCURRENCE_TIME

相关推荐

  1. Oracle分析函数

    2024-03-21 10:00:04       43 阅读
  2. ORACLE之 decode函数

    2024-03-21 10:00:04       48 阅读
  3. Oracle 中的函数

    2024-03-21 10:00:04       38 阅读
  4. Oracle时间函数

    2024-03-21 10:00:04       169 阅读
  5. Oracle—PLSQL函数

    2024-03-21 10:00:04       29 阅读
  6. oracle分区

    2024-03-21 10:00:04       39 阅读
  7. OracleOracle中的LISTAGG函数

    2024-03-21 10:00:04       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 10:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 10:00:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 10:00:04       82 阅读
  4. Python语言-面向对象

    2024-03-21 10:00:04       91 阅读

热门阅读

  1. 卡牌游戏。

    2024-03-21 10:00:04       44 阅读
  2. MATLAB入门指南:从零开始进行数学建模竞赛

    2024-03-21 10:00:04       41 阅读
  3. 软件测试:LLVM中的Fuzz模糊测试框架——libFuzzer

    2024-03-21 10:00:04       44 阅读
  4. 浅学redis

    2024-03-21 10:00:04       39 阅读
  5. Redis的脑裂问题

    2024-03-21 10:00:04       47 阅读
  6. web端判断当前chrome版本

    2024-03-21 10:00:04       47 阅读
  7. 24计算机考研调剂 | 浙江理工大学

    2024-03-21 10:00:04       43 阅读
  8. 企业产品网络安全建设日志3月20

    2024-03-21 10:00:04       35 阅读
  9. 用python实现几何相互作用GNN预测3D-PLA

    2024-03-21 10:00:04       45 阅读
  10. 1101. 献给阿尔吉侬的花束

    2024-03-21 10:00:04       45 阅读