MySQL-窗口函数 简单易懂

本文详细介绍了窗口函数在SQL中的应用,包括其在排名问题、TopN问题、前百分之N问题、累计问题等场景中的解决方案,以及其通用语法和SQL执行顺序。
摘要由CSDN通过智能技术生成

窗口函数

考查知识点:

• 如何用窗口函数解决排名问题、Top N问题、前百分之N问题、累计问题、每组内比较问题、连续问题。

什么是窗口函数

窗口函数也叫作OLAP(Online Analytical Processing,联机分析处理)函数,可以对数据库中的数据进行复杂分析。

窗口函数的通用语法如下:

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

order by   <用于排序的列名>)

我们看一下这个语法里每部分表示什么。

(1)<窗口函数>的位置可以放两种函数:

一种是专用窗口函数,比如用于排名的函数,比如rank()、dense_rank()、row_number();

另一种是汇总函数,比如sum()、avg()、count()、max()、min()。

(2)<窗口函数>后面的over关键字括号里的内容有两部分:一个是partition by,表示按某列分组;另一个是order by,表示对分组后的结果按某列排序。

(3)因为窗口函数通常是对where或者group by子句处理后的结果进行操作的,所以窗口函数原则上只能写在select子句中。

SQL的运行顺序:

from 1

where 2

group by 3

having 4 

select 5

基本查询

开窗查询

order by 6

limit 7

窗口函数可以解决这几类经典问题:排名问题、Top N问题、前百分之N问题、累计问题、每组内比较问题、连续问题

这些问题在工作中你会经常遇到,

比如,排名问题,对用户搜索关键字按搜索次数排名、对商品按销售量排名。

再如,领导想让你找出每个部门业绩排名前10的员工进行奖励,这其实就是Top N问题。

再如,要分析复购用户有多少,这类问题属于前百分之N的问题。

再如,公司对各月发放的工资累计求和,医院要经常统计累计患者数,这类问题就是累计问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nuhao_

谢谢你打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值