窗口函数相关知识点

1.基本语法

<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)

2.主要功能
核心要义:建立辅助列去帮助我们做筛选、比较
a.同时具备分组和排序的功能;
b.不同于group by,分组后不减少原表行数;
c.不用表连接就能建立辅助分析列

3.窗口函数分类
-(1)聚合类:聚合函数作为窗口函数,有累计的作用
avg(列名):累计求平均值、sum(列名):累计求和、count(列名):累计计数
max(列名)、min(列名)

-(2)排名类:排名类窗口函数不需要任何参数,生成自增编号列
row_number():按照值排序时产生一个自增编号,不会重复
rank():按照值排序时产生一个自增编号,值相等时会重复,会产生空位
dense_rank():按照值排序时产生一个自增编号,值相等时会重复,不会产生空位

-(3)其他类:如统计窗口内往前/往后的第n行的值,多用于时间序列
lag(列名,往前的第n行数默认为1,default默认为null)
lead(列名,往后的行数默认为1,default默认为null)
ntile(n):用于将分组数据按照顺序切分成n片,返回当前切片值,如果切片不均匀,默认增加第一个切片的分布

4.常见应用
(1)并列排名问题:rank()/dense_rank() over(partition by X order by Y)
(2)TOPN问题:row_number() over(partition by X order by Y)+筛选
(3)TOP20%时间的订单信息:ntile(5) over(order by orderdate DESC)


参考文章:
1.巩固SQL - 窗口函数&变量&数据透视图:https://zhuanlan.zhihu.com/p/147696603
2.LAG()和LEAD() 分析函数详解:https://blog.csdn.net/weixin_38653290/article/details/85042224

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值