窗口函数应用场景:
(1)用于分区排序
(2)动态Group By
(3)Top N
(4)累计计算
(5)层次查询
一、分析函数
用于等级、百分点、n分片等。
函数 | 说明 |
RANK() | 返回数据项在分组中的排名,排名相等会在名次中留下空位 |
DENSE_RANK() | 返回数据项在分组中的排名,排名相等会在名次中不会留下空位 |
NTILE() | 返回n分片后的值 |
ROW_NUMBER() | 为每条记录返回一个数字 |
- Rank、DENSE_RANK
RANK()在出现等级相同的元素时预留为空,DENSE_RANK()不会。
Eg:某产品类型有两个并列第一
RANK():第一二为1,第三位3
DENSE_RANK():第一二为1,第三位2
- SELECT
- column_name,
- RANK() OVER (ORDER BY column_name DESC) AS rank,
- DENSE_RANK() OVER (ORDER BY SUM(column_name) DESC) AS dense_rank
- FROM table_name
OVER 需要,括号内为编号顺序