用下面函数将 一、二、二、二、三、4 排序后:函数
select row_number() over (order by 字段 ) from 表名;排序
一、 row_number()select
值:一、二、二、二、三、4 数据
序:一、二、三、四、五、6di
二、rank()co
值:一、二、二、二、三、4 去重
序:一、二、二、二、五、6
三、dense_rank()
值:一、二、二、二、三、4
序:一、二、二、二、三、4
四、ntile(n) 将表里数据分红n组返回组号
正好被n整除 平均分红n组,整除不了则第一组多加1条在去将剩余数据平均分n-1组,还整除不了将第二组多加一条继续直到能够平均分完。
ntile(4) 将数据分红4组
值 ntile(4)
1 1
2 1
2 2
2 2
3 3
4 4
五、PERCENT_RANK() 分组内当前行的RANK值-1/分组内总行数-1
值 PERCENT_RANK()
1 0
2 0.2
2 0.2
2 0.2
3 0.8
4 1
六、cume_dist() 小于等于当前值的行数/分组内总行数
值 PERCENT_RANK()
1 0.1666
2 0.6666
2 0.6666
2 0.6666
3 0.8333
4 1
collect_set、collect_list group by 分组将每组列转成行列出来,collect_set对 转成行的内容去重,collect_list不去重所有列出来。
select depno , collect_list(name) group by depno;