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; 

 

posted on 2020-08-03 16:23  酒中影  阅读(191)  评论(0编辑  收藏  举报