暂无图片
21c版本中分析函数的加强(window、exclude、groups)
最近更新:2022-03-10 19:07:45

前言

在21c版本中,分析窗口得到了增强,支持了WINDOW子句,并且在窗口中增加支持EXCLUDE及GROUPS。 以下以HR Schema Demo为例,可以在墨天轮在线实训环境进行验证 Oracle 21c 实训环境

1.window

在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
......