分析函数用法及窗口子句 range/rows差别
分析函数的语法结构一般是:分析函数名(参数) OVER (PARTITION BY子句 ORDER BY子句 ROWS/RANGE子句)。 即由以下三部分组成: 分析函数名:如sum、max、min、count、avg等聚集函数以及lead、lag行比较函数等; over: 关键字,表示前面的函数是分析函数,不是普通的集合函数; 分析子句:over关键字后面挂号内的内容; 分析子句又由下面三部分组成: partition by :分组子句,表示分析函数的计算范围,不同的组互不相干; ORDER BY: 排序子句,表示分组后,组内的排序方式; ROWS/RANGE:窗口子句,是在分组(PARTITION BY)后,组内的子分组(也称窗口),此时分析函数的计算范围窗口,而不是PARTITON。窗口有两种,ROWS和RANGE; 下面分析rows与range窗口子句的用法,先看下面例子: SQL> edit 已写入 file afiedt.buf 1 WITH t AS 2 (SELECT (CASE 3 WHEN LEVEL IN (1, 2) THEN 4 1 5 WHEN LEVEL IN (4, 5) THEN 6 6 7 ELSE 8 LEVEL 9 END) ID 10 FROM dual 11 CONNECT BY LEVEL < 10) 12 SELECT id, 13