本文重点一、什么是窗口函数
- 窗口函数可以进行排序、生成序列号等一般的聚合函数无法实现的高级操作。
- 理解 PARTITION BY 和 ORDER BY 这两个关键字的含义十分重要。
专栏二、窗口函数的语法
窗口函数的支持情况
很多数据库相关工作者过去都会有这样的想法:“好不容易将业务数据插入到了数据库中,如果能够使用 SQL 对其进行实时分析的话,一定会很方便吧。”但是关系数据库提供支持 OLAP 用途的功能仅仅只有 10 年左右的时间。
其中的理由有很多,这里我们就不一一介绍了。大家需要注意的是,还有一部分 DBMS 并不支持这样的新功能。
本文将要介绍的窗口函数也是其中之一,截至 2016 年 5 月,Oracle、SQL Server、DB2、PostgreSQL 的最新版本都已经支持了该功能,但是 MySQL 的最新版本 5.7 还是不支持该功能。
通过前面的学习,我们已经知道各个 DBMS 都有自己支持的特定语法和不支持的语法。标准 SQL 添加新功能的时候也会遇到同样的问题(随着时间推移,标准 SQL 终将能够在所有的 DBMS 中进行使用)。
※ [] 中的内容可以省略。其中重要的关键字是 PARTITION BY 和 ORDER BY,理解这两个关键字的作用是帮助我们理解窗口函数的关键。
法则 1通过 PARTITION BY 分组后的记录集合称为窗口。此处的窗口并非“窗户”的意思,而是代表范围。这也是“窗口函数”名称的由来。[4]
窗口函数兼具分组和排序两种功能。
法则 2此外,各个窗口在定义上绝对不会包含共通的部分。就像刀切蛋糕一样,干净利落。这与通过 GROUP BY 子句分割后的集合具有相同的特征。
通过 PARTITION BY 分组后的记录集合称为“窗口”。
法则 3六、窗口函数的适用范围
由于专用窗口函数无需参数,因此通常括号中都是空的。
法则 5原文链接:https://www.developerastrid.com/sql/sql-olap/
将聚合函数作为窗口函数使用时,会以当前记录为基准来决定汇总对象的记录。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |