MySQL——窗口函数(笔记整理)

   日期:2024-12-29     作者:z9rae       评论:0    移动:http://mip.riyuangf.com/mobile/news/12939.html
核心提示:什么是窗口函数? 简单来说就是 将 一个查询SQL 的结果集按指定的规则进行分区,每个分区可以看作是一个窗口,

什么是窗口函数

简单来说就是 将 一个查询SQL 的结果集按指定的规则进行分区,每个分区可以看作是一个窗口,分区内的每一行,根据其所属分区内的行数据进行函数计算,获取计算结果,作为该行的窗口函数结果值

MySQL——窗口函数(笔记整理)

窗口函数和Group by的区别

-group by使用聚合函数,普通场景下的聚合函数是将多条记录聚合为一条(多到一)-窗口函数是每条记录都会执行,有几条记录执行完还是几条(多到多

语法
函数名(字段名) over(partition by <要分列的组> order by <要排序的列> rows between <数据范围>)

rows between 2 preceding and current row #本行和前面两行

rows between unbounded preceding and current row #本行和之前所有的行 #unbounded意为无限的

rows between current row and unbounded following # 本行和之后所有的行rows between 3 preceding and 1 following # 从前面三行和下面一行,总共五行

-- 当order by后面没有rows between时,窗口规范默认是取本行和之前所有的行

-- 当order by和rows between都没有时,窗口规范默认是分组下所有行

MySQL函数之——窗口函数

一、累计和:SUM(字段) over

二、最大最小:MAX(字段)over)、MIN(字段)over

三、移动平均:AVG(字段)over

四、排名排序:Rank)over

五、前后取值【相隔差】:LAG(字段,n)over)、LEAD(字段,n)over

六、首位末位:first_value(字段)over)、last_value)over

七、第N个:NTH_VALUE(expr,n)over

八、分桶分箱(分等级)NTILE(n)over

-- 窗口语法:函数名(字段名)over(子句
【场景1】 累计和:sum(字段)over

 


【场景2】最大最小:MAX(字段)over)、MIN(字段)over

 

【场景3】移动平均:AVG(字段)OVER()  ***重点理解这题****

 


            
 【场景4】排名:RANK() OVER()

 


            
【场景5】前后取值:LAG(字段,n) OVER()、LEAD(字段,n) OVER()    

 


【场景6】首位末位:FIRST_VALUE(字段) OVER()、LAST_VALUE(字段) OVER()

 

【场景7】第N个:NTH_VALUE(expr, n) OVER()

 


【场景8】分桶分箱:NTILE(n) OVER()

 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类最新资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
最新资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号