分析函数的语法结构一般是:分析函数名() OVER (PARTITION BY子句 ORDER BY子句 ROWS/RANGE子句)
即由以下三部分组成:
分析函数名 如SUM()、MAX()、MIN()、COUNT()、AVG()等聚集函数以及LEAD()、LAG()行比较函数等
OVER 关键字,表示前面的函数是分析函数,不是普通的集合函数
分析子句 OVER关键字后面括号内的内容
分析子句又由下面三部分组成:
PARTITION BY 分组子句,表示分析函数的计算范围,不同的组互不相干
ORDER BY 排序子句,表示分组后,组内的排序方式
ROWS/RANGE 窗口子句,是在分组(PARTITION BY)后,组内的子分组(也称窗口),
是分析函数的计算范围窗口,而不是PARTITION;
窗口有两种,ROWS 和 RANGE
下面分析 ROWS 与 RANGE 窗口子句的用法,先看下面例子:
- SQL> edit
- 已写入 file afiedt.buf
-
- WITH t AS
- (
- SELECT (CASE
- WHEN LEVEL IN (1, 2) THEN
- 1
- WHEN LEVEL IN (4, 5) THEN
- 6
- ELSE
- LEVEL