目录
一、窗口函数
1. 窗口函数概念及基本的使用方法
窗口函数也称为OLAP函数。OLAP 是 OnLineAnalyticalProcessing
的简称,意思是对数据库数据进行实时分析处理。
为了便于理解,称之为 窗口函数。常规的SELECT
语句都是对整张表进行查询,而窗口函数可以让我们有选择的去某一部分数据进行汇总、计算和排序。
窗口函数的通用形式:
<窗口函数> OVER ([PARTITION BY <列名>]
ORDER BY <排序用列名>)
[ ]中的内容可以省略。
窗口函数最关键的是搞明白关键字 PARTITON BY
和 ORDER BY
的作用。
PARTITION BY
是用来分组,即选择要看哪个窗口,类似于 GROUP BY
子句的分组功能,但是 PARTITION BY
子句并不具备 GROUP BY
子句的汇总功能,并不会改变原始表中记录的行数。
ORDER BY
是用来排序,即决定窗口内,是按那种规则(字段)来排序的。
举个栗子:
SELECT product_name
,product_type
,sale_price
,RANK() OVER (PARTITION BY product_type
ORDER BY sale_price) AS ranking
FROM products;
得到的结果是:
我们先忽略生成的新列 - [ranking]