热线电话:13121318867

登录
2020-05-02 阅读量: 1075
开窗函数

语法:开窗函数名([<字段名>]) over([partition by <分组字段>] [order by <排序字段> [desc]] [< 滑动窗口>])

跟分组函数group by 有一样得功能,给某个特定得字段进行分组,比方说一个公司各部门,一个学校个年级/各班级等等,但是group by 聚合了以后智慧显示聚合后的聚合值,要想显示所有的,就要用开窗函数

例:sum(number) over(partition by nianji order by desc rank)——意思就是先给年级分成组,一年级二年级三年级,然后在一年级里面统计数学生数量,并且按降序排序,序号可以是重复不连续的

开窗函数里面有个比较难理解的就是后面的滑动窗口:

current row 边界是当前行,一般和其他范围关键字一起使用

unbounded preceding 边界是分区中的第一行

unbounded following 边界是分区中的最后一行

expr preceding 边界是当前行减去expr的值

expr following 边界是当前行加上expr的值

动态窗口函数:first_value() / last_value()/nth_value()/聚合函数用于开窗

如没有指定排序和滑动窗口范围,默认计算的是分区内的所有记录

指定分区和排序后,如没有指定滑动窗口范围,默认计算的是分区内的第一行到当前行

静态窗口函数:row_number() / rank() / dense_rank()/percent_rank() / cume_dist()/lag() / lead()/ntile()

不管是否指定滑动窗口范围,窗口都是固定的,所以指定的滑动窗口范围无效

94.2869
7
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子