mysql分组取出每组地一条数据_Mysql窗口函数介绍

本文详细介绍了MySQL窗口函数,包括定义、语法和应用场景。重点讲解了窗口函数中的专用窗口函数、聚合函数、OVER子句中的PARTITION BY、ORDER BY和ROWS参数,以及它们与GROUP BY的区别。文章还提供了窗口函数的实际操作示例和练习题,帮助读者掌握窗口函数在处理复杂报表统计分析场景中的应用。
摘要由CSDN通过智能技术生成

摘要

本文主要介绍窗口函数。第一部分介绍窗口函数定义,第二部分介绍窗口函数的语法,包括窗口函数以及over子句。其中窗口函数部分介绍了专用窗口函数、聚合函数、排序函数ntitile以及偏移函数lean与lag。over子句部分介绍partition by,order by 及rows三个参数,在partition by 和order by部分介绍了他们和group by 以及group by 子句、order by子句的区别。每一个参数均举了例子说明。第三部分对内容作了总结。第四部分是一些SQL的练习题,来源于拉钩数据分析训练营教学笔记。

1 思维导图

93536aebc8e62a45b54d841e06279147.png

2 窗口函数定义

窗口函数也称为OLAP(Online Analytical Processing)函数, 意思是可以对数据库数据进行实时分析分析处理的函数。

窗口函数主要用来处理相对复杂的报表统计分析场景。举个例子,现在有三个月的销售数据,如下表所示:

24a5adc13d19fb6c0b05375c4d9746f2.png

如何在每个月实现所有月份销售额的统计,如下表:

7c667b30c50c31655070d587f7fb7c1b.png

再比如,如何实现移动累积销售额的计算?比如我要计算最近三个月的累积销售额。

以上这些需求可以通过窗口函数来实现。

3 窗口函数语法

<窗口函数> OVER子句

可以看到,窗口函数的语法包含两个大的部分,分别是:<窗口函数>over 子句。现在分别对这两个概念进行说明。

3.1 窗口函数

能够作为窗口函数使用的函数有以下几种:

  1. 专用窗口函数

1) RANK() :计算排序时,如果存在相同位次的记录,则会跳过该记录。例如有2条记录的值为100,1条记录的值为200,对这3条记录进行排序时,结果为:1,1,3

2)DENSE_RANK():计算排序时,即使存在相同位次的记录,也不会跳过之后的位次。例如有2条记录的值为100,1条记录的值为200,对这3条记录进行排序时,结果为:1,1,2

3)row_number():按顺序计算排序,对这3条记录进行排序时,结果为:1,2,3

2. 聚合函数

SUM、AVG、COUNT、MAX、MIN等。窗口函数的聚合方式和GROUP BY的聚合方式有些区别,在后面会详细说明。

3. 其他常用函数:

1)排序函数:ntitle(n)

2)排序函数:ntitle(n)

运用了窗口函数的语法如下:

RANK() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值