文章目录
1. 窗口函数的概念和使用
什么是窗口函数?
- 也称为OLAP函数(
OnLine AnalyticalProcessing
) - 对数据库数据进行实时分析处理
常规的SELECT语句是对整张表查询,而窗口函数可有选择的对某一部分数据进行汇总、计算和排序。
窗口函数的通用形式?
<窗口函数> OVER ([PARTITION BY <列名>]
ORDER BY <排序用列名>)
[ ]中的内容可以省略
- PARTITON 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 product;
- PARTITION BY 设定窗口对象范围(指定了product_type,即一个商品种类就是一个小的"窗口")
- ORDER BY 按销售单价升序排列
窗口函数的适用范围和注意事项
- 原则上,只能在SELECT子句中使用。
- 窗口函数OVER 中的ORDER BY 子句并不会影响最终结果的排序