这个函数长这个样子:OVER(PARTITION BY… ORDER BY…)
顾名思义,PARTITION 中文是分割的意思,ORDER 是排序的意思,所以翻译一下就是先把一组数据按照制定的字段进行分割成各种组,然后组内按照某个字段排序。
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 早于order by 的执行。
伪列ROWNUM
常用的分析函数如下所列:
- row_number() over(partition by ... order by ...) --分组排序
- rank() over(partition by ... order by ...) --分组排序
- dense_rank() over(partition by ... order by ...) --分组排序
- count() over(partition by ... order by ...) --分组计数
- max() over(partition by ... order by ...) --分组取最大值
- min() over(partition by ... order by ...) --分组取最小值
- sum() over(partition by ... order by ...) --分组求和
- avg