【 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,PROVINCEID,CITYID FROM (SELECT ID,PROVINCEID,CITYID,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

猜你喜欢

转载自blog.csdn.net/haoyutc/article/details/76189502