MySQL-窗口函数 简单易懂

窗口函数

考查知识点:

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

什么是窗口函数

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

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

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

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

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

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

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

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

MySQL-窗口函数 简单易懂_第1张图片

(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的问题。

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

你可能感兴趣的:(mysql,数据库,sql,数据库开发)