2016-04-04 37 views
1

在Oracle數據庫中,可以指定所有數據GROUP BY中的所有列的語法

SELECT sum(price) 
FROM tabA 
GROUP BY() 

我的理解是GROUP BY子句可以省略,但如果我們有明確的,將完整形式是GROUP BY()的一個單組?這取自GROUPING SETS的文檔。

我記得有一次看過GROUP BY NULL有相同的意思。這是對的嗎?否則GROUP BY NULL是什麼意思?

回答

2

通過()進行聚合與沒有值聚合或恆定值相同。 例如:

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