高级报表之移动分析和累计求和

上一篇我们学习了利用 GROUP BY 子句的扩展选项(ROLLUP、CUBE 以及 GROUPING SETS)实现数据的层次统计、交叉汇总以及自定义维度分析等高级功能。

不过,产品和业务对于复杂报表的需求并不仅仅止步于此。例如,如何分析员工在部门内的薪酬排名、计算产品每个月的累计销量以及与去年同期相比的增长率等。这些分析功能通过分组汇总操作通常很难或者无法实现,因此我们需要了解更加强大的 SQL 窗口函数(Window Function)。

窗口函数定义

与聚合函数类似,窗口函数也是针对一组数据进行分析计算;但窗口函数不是将一组数据汇总成单个结果,而是为每一行数据返回一个分析结果。下图演示了两者之间的区别:

window function

聚合函数会将同一个组内的多条数据汇总成一条数据,但是窗口函数保留了所有的原始数据。

窗口函数也被称为联机分析处理(OLAP)函数,或者分析函数(Analytic Function)。

我们以 SUM 函数为例,比较这两种函数的差异。以下语句将 SUM 作为聚合函数使用,统计所有员工的总月薪:

SELECT SUM(salary) AS sum_salary
  FROM employee;

s

猜你喜欢

转载自blog.csdn.net/horses/article/details/108729094