当前位置:网站首页 > Haskell函数式编程 > 正文

mysql窗口函数sum(mysql窗口函数有哪些)



MySQL窗口函数是一种强大的工具,用于在查询中执行复杂的统计分析,而不需要改变表的结构或数据。MySQL从8.0版本开始支持窗口函数,这些函数也被称为分析函数,因为它们能够处理相对复杂的报表统计分析场景。

窗口的意思是将数据进行分组,每个分组即是一个窗口,这和使用聚合函数时的group by分组类似,但与聚合函数不同的地方是: 聚合函数(例如:sum/avg/min/max)会针对每个分组(窗口)聚合出一个结果(每一组返回一个结果)。 窗口函数会对每一条数据进行计算,并不会使返回的数据变少(每一行返回一个结果)

 
  

<窗口函数> 的位置,可以放以下两种函数:

  1. 聚合函数:如SUM、AVG、COUNT、MAX、MIN等,可以在不合并行的情况下计算每行的聚合值。
  2. 专用窗口函数:
    • 排序函数:包括RANK、DENSE_RANK、ROW_NUMBER等,用于为数据集中的每行分配一个唯一的排名或编号。
    • 偏移函数:包括LAG和LEAD等,用于获取当前行之前的或之后的指定偏移量的值
    • 值函数:FIRST_VALUE和LAST_VALUE返回窗口分区中第一行或最后一行的值,而NTH_VALUE则返回窗口内偏移指定offset后的值。

窗口操作不会将多组查询行折叠成单个输出行。相反,它们为每一行产生一个结果:

 
  

在这里插入图片描述

 
  

在这里插入图片描述

注意分数相同时,分组累计(标黄处)的处理逻辑(见:《3,进阶用法》)

 
  

在这里插入图片描述

求每门课程的前两名:

 
  

在这里插入图片描述

如果每门课程只需要前两条数据,可把RANK() 函数换成 ROW_NUMBER()

 
  

在这里插入图片描述

 
  

在这里插入图片描述
注意了:从结果看,我们对FIRST_VALUE()很清晰,就是获取的第一个值,但是LAST_VALUE()和NTH_VALUE获取的值跟我们想象中的不太一样呢? 没错,LAST_VALUE()和NTH_VALUE是获取的截止到当前为止的值,而不是整个组的最后一个值后指定的值(见:《3,进阶用法》)。

 
  

rows/range:窗口子句,主要用来限制分组(也称窗口)的行数和数据范围

窗口子句必须和order by 子句同时使用,如果指定了order by 子句未指定窗口子句,则默认为,即从当前分组起点到当前行。

行比较分析函数lead和lag无窗口子句。

窗口子句常用语法:

  • CURRENT ROW:当前行
  • UNBOUNDED:无界限(起点或终点)
  • PRECEDING:往前
  • FOLLOWING:往后

如上文《2.4,值函数》,如果想获取整个窗口的LAST_VALUE()和NTH_VALUE:

 
  

在这里插入图片描述
rows 和range区别:

  1. rows是物理窗口,即根据order by 子句排序后,取的前N行及后N行的数据计算(与当前行的值无关,只与排序后的行号相关)。
  2. range是逻辑窗口,即根据order by 子句排序后,取的前N行及和当前行有相同order by值的所有行数据计算。

例如在《2.1,聚合函数》飘黄部分,因为默认窗口字句是,所以改成把"RANGE"改成"ROWS"就是逐条统计:

 
  

在这里插入图片描述

到此这篇mysql窗口函数sum(mysql窗口函数有哪些)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 编程入门教程在线看(编程入门基础教程)2026-05-04 14:00:04
  • 支付方式T/T(支付方式TT是什么)2026-05-04 14:00:04
  • ifstream get函数(fstream getline函数)2026-05-04 14:00:04
  • 一级一级标题二级标题三级标题格式的要求有哪些 二级一级标题二级标题三级标题格式的要求有哪些 格式(论文一级一级标题二级标题三级标题格式的要求有哪些二级一级标题二级标题三级标题格式的要求有哪些格式)2026-05-04 14:00:04
  • 虚拟u盘是什么(虚拟u盘是什么格式的)2026-05-04 14:00:04
  • 聚合函数为什么不允许where中(聚合函数不允许出现在什么子句中)2026-05-04 14:00:04
  • hpm格式文件怎么打开(hpk格式怎么打开)2026-05-04 14:00:04
  • 3DTiles是什么格式(3dl是什么文件格式)2026-05-04 14:00:04
  • console口配置命令大全(console口连接方式)2026-05-04 14:00:04
  • 怎样使用pycharm创建py格式文件(pycharm创建pygame的方法)2026-05-04 14:00:04
  • 全屏图片