23c 新特性之基于别名的GROUP BY

来源:这里教程网 时间:2026-03-03 19:15:19 作者:

描述                                            

基于别名的GROUP BY 的介绍

Oracle Database 23c 开始, Oracle 数据库支持基于别名的 GROUP BY 操作,相较于之前的数据库版本经常遇到在 GROUP BY  后面不能跟字段别名的情况,如果是一个比较复杂的表达式,在 GROUP BY  后面输入,不太方便,很多时候,认为 ORDER BY  后面都可以跟字段别名,或字段顺序号,那 GROUP BY  后面也可以,但是实际上是不支持的。因此在 23c 推出以基于表达式的别名或者它在  SELECT  列表中的位置指定  GROUP BY   HAVING  操作,从而简化了 SQL 写法。

基于别名的GROUP BY 测试

创建测试数据

SQL> create table employees(department_id int, salary number(10));
SQL> insert into employees values (1,1000);
SQL> insert into employees values (2,2000);
SQL> insert into employees values (3,3000);
SQL> insert into employees values (4,4000);

 

环境测试

SQL> select banner from v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
 
SQL> select department_id deptid ,sum(salary) from employees group by deptid having deptid > 3;
select department_id deptid ,sum(salary) from employees group by deptid having deptid > 3
                                                                    *
ERROR at line 1:
ORA-00904: "DEPTID": invalid identifier
 
 
SQL>

 

这里报错了,在GROUP BY  后面需要实际的字段名

环境测试

SQL> select BANNER from  v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
 
SQL> select department_id deptid,sum(salary)
  2     from employees
  3    group by deptid having deptid > 3;

相关推荐