【 ORACLE】 ROW_NUMBER() OVER() 分析函数实践

前端之家收集整理的这篇文章主要介绍了【 ORACLE】 ROW_NUMBER() OVER() 分析函数实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

oracle 中的 ROW_NUMBER() OVER() 分析函数用法

ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的)。

  • 有数据表省市表T1
字段 类型 默认 注释
ID VARCHAR2(32) 主键
PROVINCEID VARCHAR2(200) 省份ID
CITYID VARCHAR2(200) 城市ID

- 数据如下:

SELECT ID,PROVINCEID,CITYID,ROW_NUMBER() OVER(partition by ID order by CITYID desc) as RANK FROM T1;
ID PROVINCEID CITYID
001 AAA 101
001 AAA 102
002 BBB 101
002 BBB 102
002 BBB 103

- 把上面语句作为一个子表语句,嵌入到另一条语句中:

SELECT ID,CITYID FROM (SELECT ID,ROW_NUMBER() OVER(partition by ID order by CITYID desc) as RANK FROM T1 ) T WHERE T.RANK=1;
ID PROVINCEID CITYID
001 AAA 102
002 BBB 103

猜你在找的Oracle相关文章