sql排序
用下面函数将 1、2、2、2、3、4 排序后:
select row_number() over (order by 字段 ) from 表名;
1、 row_number()
值:1、2、2、2、3、4
序:1、2、3、4、5、6
2、rank()
值:1、2、2、2、3、4
序:1、2、2、2、5、6
3、dense_rank()
值:1、2、2、2、3、4
序:1、2、2、2、3、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
5、PERCENT_RANK() 分组内当前行的RANK值-1/分组内总行数-1
值 PERCENT_RANK()
1 0
2 0.2
2 0.2
2 0.2
3 0.8
4 1
6、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;