SQL窗口函数

窗口函数,也可以称为OLAP函数或分析函数。
它既可以分组,也可以排序,即兼具分组与排序功能,对于每一组能返回多行。
聚合函数是将某列多行中的值根据聚合规则返回(合并)为一行,对于每组只返回一行。

  1. 基本语法
    <窗口函数> over (partition by <列清单> order by <排序用列清单>)

  2. 大体分类:
    能够作为窗口函数的聚合函数:sum,avg,count,max,min;
    专用窗口函数:rank,dense_rank,row_number,lag,lead,first_value,last_value…

  3. 主要用于计算记录排序的函数
    rank():返回行号,会遇到相同位次的记录时,行号重复并间断;
    dense_rank():返回行号,会遇到相同位次的记录时,行号重复并不间断;
    row_number():返回行号,会遇到相同位次的记录时,行号不重复并不间断;
    在这里插入图片描述

  4. Lead()和LAG()函数
    LAG()和Lead(),这两个分析函数经过Order By子句排序后,可以在当前行访问上N行(LAG)或下N行(LEAD)的数据。
    LAG (scalar_expression [,offset] [,default]) OVER ( [ partition_by_clause ] order_by_clause )
    读取的数据,偏移多少行,如果没有值默认值是多少。
    eg:lead(value,1,99) over (order by value) --向下取一行,没有值时默认为99。

  5. 注意:
    窗口函数是整个SQL语句最后被执行的部分,这意味着窗口函数是在SQL查询的结果集上进行的,因此不会受到Group By, Having,Where子句的影响;
    Order By子句对于诸如Row_Number(),Lead(),LAG()等函数是必须的,因为如果数据无序,这些函数的结果就没有任何意义;
    窗口函数只能存在于select子句中。

  6. 移动平均值
    在这里插入图片描述
    在这里插入图片描述

https://blog.csdn.net/qq_41805514/article/details/81772182

声明:菜鸟学习路上的总结,若有误请您指正,若侵权请您联系我,若转载请您附上链接。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值