`

oracle rank() over 求最后一条记录

 
阅读更多
业务场景:
    资产管理中的供需平衡监控。现在又如下“供需分析统计结果”表


现在需要求每个充电站的最新分析结果。
WITH SUPPLY_TEMP AS
 (SELECT A.STAT_ID,
         RANK() OVER(PARTITION BY A.SUBS_ID, A.EQUIP_CATEG, A.EQUIP_CODE_ID ORDER BY A.STAT_DATE DESC) RANK1,
         B.ORG_NO,
         B.ORG_NAME,
         C.SUBS_NAME,
         A.EQUIP_CATEG,
         A.EQUIP_CODE_ID,
         A.STOCK_NUM,
         A.PLAN_DIST_NUM,
         A.DISTING_NUM,
         A.MAX_SS,
         A.MIN_SS,
         A.EST_USE_NUM,
         A.EST_SUPPLY_END_DATE
    FROM D_SUPPLYDMD_STAT A, O_ORG B, C_SUBS C
   WHERE A.ORG_NO = B.ORG_NO
     AND A.SUBS_ID = C.SUBS_ID
     AND A.STAT_DATE > ADD_MONTHS(SYSDATE, -1)
   ORDER BY A.ORG_NO)
SELECT * FROM SUPPLY_TEMP B WHERE B.RANK1 = 1

可以通过 RANK() OVER(PARTITION BY A.SUBS_ID, A.EQUIP_CATEG, A.EQUIP_CODE_ID ORDER BY A.STAT_DATE DESC)来分组、排序来获取序列,
求最新的分析结果 只要按照分析时间(STAT_DATE)倒序排序,再取rank为1的结果就是不同充电站的最后一条分析记录了。
最后把网上关于 rank () over , row_number() over ,rank_dense ()之间的区别列一下。
1,2,2,4,5,6.。。。。这是rank()的形式

1,2,2,3,4,5,。。。。这是dense_rank()的形式

1,2,3,4,5,6.。。。。。这是row_number()涵数形式
  • 大小: 63.9 KB
分享到:
评论

相关推荐

    Oracle查询中OVER (PARTITION BY ..)用法

    Oracle查询中的`OVER (PARTITION BY ..)`是一个窗口函数,它允许我们在数据集上执行计算,但不是在整个结果集上,而是针对每个分区。这部分功能非常强大,可以用于复杂的分析和排序任务,尤其是在处理分组数据时。在...

    oracle函数介绍(6) 著名函数之分析函数.doc

    相反地,LAST_VALUE函数返回范围内最后一条记录的列值。 7. LAG(col[,n][,n]) over([partition_clause] order_by_clause) LAG函数返回当前行之前n行的列值,如果超出范围,可指定返回的默认值,否则默认为NULL。 ...

    oracle 查询出每组中最大的三个记录和查询重复记录

    在Oracle数据库中,查询数据是日常操作的一部分,而有时候我们需要获取特定的数据集,例如每组中的最大几个记录或者找出重复的记录。这篇博客主要探讨如何实现这两个目标。 首先,我们来讨论如何查询每组中最大的三...

    【转】Oracle分析函数简述

    在这个例子中,我们首先按照部门(department_id)进行分区,然后在每个部门内按工资(salary)降序排列,最后为每个部门的每条记录分配一个排名。 了解并熟练使用Oracle分析函数对于优化查询性能、简化数据处理...

    oracle连续重复行去重

    根据题目描述,我们面对的任务是:对于一个表中的数据,需要将连续n条记录中,`id`和`dno`均相同的记录进行合并。合并后的记录应具有以下特征: - 开始时间为合并范围内最早的开始时间; - 结束时间为合并范围内最晚...

    oracle分析函数.doc

    假设我们有一个销售表,包含产品ID、销售日期和销售额,我们可以使用`ROW_NUMBER()`来为每条记录分配一个顺序编号,或者使用`SUM()`函数计算每个产品的累计销售额。 ```sql SELECT product_id, sale_date, sale_...

    oracle sql分页语句

    Oracle SQL分页语句是数据库查询中的一个重要概念,它允许我们从海量数据中按需获取特定范围的结果,比如第一页、第二页等。在Oracle数据库系统中,实现分页查询通常使用ROWNUM伪列或者结合RANK()、DENSE_RANK()、...

    oracle查看执行最慢与查询次数最多的sql语句

    通过除法计算出平均执行时间,并将结果限制在50条记录内。 接下来,我们讨论如何找出查询次数最多的SQL语句。同样,我们可以利用`v$sql`视图,但这次关注的是执行次数而非执行时间: ```sql SELECT s.SQL_TEXT, ...

    心得共享Oracle经验技巧集锦

    这里`full=Y`表示完整导入,`buffer=64000`设置缓冲区大小,`commit=Y`表示每导入一条记录就提交一次,`ignore=Y`忽略主键冲突。 #### 8. 使用子查询创建新表 可以利用子查询快速创建一个新表并填充数据,例如: ...

    【Oracle】LISTAGG函数的使用.pdf

    * 分组之后,聚合函数只会每组返回一条数据,而分析函数会针对每条记录都返回。 * 部分分析函数还会对同一组中的数据进行一些处理(例如:rank() 函数对每组中的数据进行编号); * 还有一部分分析函数不会对同一组...

    oracle分页,比较简单很好懂

    例如,如果我们想获取第11到20条记录,可以这样写: ```sql SELECT * FROM your_table OFFSET 10 ROWS -- 跳过前10行 FETCH NEXT 10 ROWS ONLY; -- 获取接下来的10行 ``` 然而,Oracle更常用的分页方法是使用`...

    oracle常用查询

    7. **游标**:游标用于处理单条记录,对于需要逐条处理查询结果的情况非常有用。在PL/SQL中,游标可以被声明、打开、读取、关闭。 8. **视图**:视图是虚拟表,基于一个或多个表的查询结果。它可以简化复杂的查询,...

    oracle经典sql多表查询,sql统计

    4. 全外连接(FULL OUTER JOIN):返回左右两表的所有记录,如果某条记录在另一表中没有匹配,则显示为NULL。 5. 自连接:一个表与自身进行连接,通常用于处理层次结构或自我参照的数据,如员工的上下级关系。 二...

    Oracle经验集锦

    SELECT column_name FROM (SELECT *, DENSE_RANK() OVER (ORDER BY column DESC) rank FROM table_name) WHERE rank = N; ``` - **分页查询**:在Oracle中,`ROWNUM` 是一个虚拟列,用于对查询结果进行排序和分页...

    oracle-jdbc分页实现(只需传入sql语句即可实现分页)

    Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标(CURSOR)以及Oracle的高级分页功能如ROW_NUMBER()、RANK()和DENSE_RANK()等。 1. ROWNUM伪列: ROWNUM是Oracle数据库特有的一个伪列,它...

    oracle ebs开发文档

    - **实现按“ENTER”自动跳至下一条记录**:使用 Forms 的内置事件处理逻辑,例如使用 WHEN-NEW-RECORD-INSTANCE 触发器来实现自动跳转。 - **使用堆叠画布**:这是一种用于布局管理的技术,可以实现在有限的空间内...

    Oracle分析函数使用总结

    6. **ROW_NUMBER()**:这是一个非常简单的函数,为每一条分组记录返回一个数字,可以看作是行号。 #### 二、示例演示 接下来,通过一个具体的例子来说明RANK()与DENSE_RANK()的使用情况。假设我们有一个销售数据表...

    Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

    是第3名 LAG 表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL BTW: EXPERT ONE ON ONE 上讲的最详细,还有很多相关特性,文档看起来比较费劲 row_number()和rownum差不多,功能更强一点...

Global site tag (gtag.js) - Google Analytics