窗口函数的其他类型

2018-12-28  本文已影响0人  神呐_宽恕我把

ntile(z)over(partition by x order by y)

对相同x按照y排序,把y平均分成z份

cume_dist()over(partition by x order by y)

对相同x统计y中最小的值占最大的值的百分比

percent_rank()over(partition by x order by y)

对相同x去掉y的第一个值后,对相同x统计y中最小的值占最大的值的百分比

lag(y,n,'m ')over(partition by x order by y)

n表示一个数字,m表示y字段类型的值

对相同x按照y排序,把y前n个值改成m

lead(y,n,'m ')over(partition by x order by y)

n表示一个数字,m表示y字段类型的值

对相同x按照y排序,把y后n个值改成m

last_value(n)over(partition by x order by y)

n表示字段

取分组内排序后,截止到当前行,最后一个值

first_value(n)over(partition by x order by y)

n表示字段

取分组内排序后,截止到当前行,第一个值

select x,y,count(distinct m),grouping_id from group by x,y,grouping set(x,y)order by group_id;

统计相同x或者y有多少个不同的m

grouping_id表示这一组结果属于哪个分组集合,1表示x,2表示y

group by x,y with cube

对x,y聚合,4种结果  (x,y),(x,null),(null,y),(null,null)

group by x,y with rollup

对x,y聚合,4种结果  (x,y),(x,null),(null,null)

上一篇下一篇

猜你喜欢

热点阅读