读书人

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

发布时间: 2012-07-23 09:42:19 作者: rapoo

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()涵数形式

读书人网 >其他数据库

热点推荐