在21c版本中,分析窗口得到了增强,支持了WINDOW子句,并且在窗口中增加支持EXCLUDE及GROUPS。 以下以HR Schema Demo为例,可以在墨天轮在线实训环境进行验证 Oracle 21c 实训环境
在21c之前,如果我们要对同一个窗口进行多次统计分析,一般是像下面这么写
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
salary,
sum(salary) over(partition by DEPARTMENT_ID) sum_salary,
min(salary) over(partition by DEPARTMENT_ID) min_salary,
max(salary) over(partition by DEPARTMENT_ID) max_salary
from hr.employees;
其中的窗口部分“(partition by DEPARTMENT_ID)”重复出现了3次,让语句显得太过冗余,但在21c版本后,支持将window子句单独提出来,可以使sql得到很大的简化,像下面这样
select EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
salary,
sum(salary) over w1 sum_salary,
min(salary) over w1 min_salary,
max(salary) over w1 max_salary
from hr.employees