GROUP BY 所有列语法

GROUP BY all columns syntax

在Oracle数据库中,指定一组所有数据

SELECT sum(price)
FROM tabA
GROUP BY ()

我知道这里可以省略 GROUP BY 子句,但是如果我们明确包含,完整形式是 GROUP BY () 吗?这取自 GROUPING SETS 的文档。

我记得有一次读到 GROUP BY NULL 有相同的意思。这是正确的吗?否则 GROUP BY NULL 是什么意思?

按 () 聚合与聚合无值或常量值相同。 例如:

create table test_group(cod varchar2(16), descr varchar2(16), num number);
insert into test_group values ('a', 'letter A', 10);
insert into test_group values ('b', 'letter b', 20);
insert into test_group values ('b', 'letter B', 35);
insert into test_group values ('c', 'letter c', 70);
insert into test_group values ('c', 'letter c', 99);

无值聚合

SQL> select sum(num)
  2  from test_group;

  SUM(NUM)
----------
       234

聚合 null

SQL> select sum(num)
  2  from test_group
  3  group by null;

  SUM(NUM)
----------
       234

聚合()

SQL> select sum(num)
  2  from test_group
  3  group by ();

  SUM(NUM)
----------
       234

按常数值聚合:

SQL> select sum(num)
  2  from test_group
  3  group by 'constant';

  SUM(NUM)
----------
       234

你必须明确写下你的聚合条件:

SQL> select *
  2  from test_group
  3  group by *;
group by *
         *
ERROR at line 3:
ORA-00936: missing expression