Oracle分組小計、總計樣本(grouping sets的使用)____Oracle

來源:互聯網
上載者:User
1.首先建立一個表
Sql代碼 [sql] view plain copy print ? create table TE   (     ID        VARCHAR2(2),     T_CODE    VARCHAR2(4),     T_NAME    VARCHAR2(4),     T_AMOUNT  INTEGER,     T_DEPT    VARCHAR2(4),     T_PROJECT VARCHAR2(4),     T_TYPE    VARCHAR2(1)   )  
create table TE(  ID        VARCHAR2(2),  T_CODE    VARCHAR2(4),  T_NAME    VARCHAR2(4),  T_AMOUNT  INTEGER,  T_DEPT    VARCHAR2(4),  T_PROJECT VARCHAR2(4),  T_TYPE    VARCHAR2(1))


2.錄入資料如下:
Sql代碼 [sql] view plain copy print ? insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)   values ('1', '1', '1', 10, '總部', '90', '0');      insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)   values ('2', '2', '2', 20, '總部', '70', '0');      insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)   values ('3', '3', '3', 30, '分1', '60', '0');      insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)   values ('4', '4', '4', 40, '分1', '50', '0');      insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)   values ('5', '5', '5', 50, '分2', '40', '0');      insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)   values ('6', '6', '6', 60, '分2', '30', '0');  
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)values ('1', '1', '1', 10, '總部', '90', '0');insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)values ('2', '2', '2', 20, '總部', '70', '0');insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)values ('3', '3', '3', 30, '分1', '60', '0');insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)values ('4', '4', '4', 40, '分1', '50', '0');insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)values ('5', '5', '5', 50, '分2', '40', '0');insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)values ('6', '6', '6', 60, '分2', '30', '0');


3.查詢全表查看 [java] view plain copy print ? select * from te;  
select * from te;





4.用t.t_dept, t.t_project進行分組查詢

Sql代碼 [sql] view plain copy print ? select t.t_dept, t.t_project, sum(t.t_amount) from te t   group by t.t_dept, t.t_project;  
select t.t_dept, t.t_project, sum(t.t_amount) from te tgroup by t.t_dept, t.t_project;


結果如下:



5.用t.t_dept, t.t_project,並使用t.t_dept來做小計

Sql代碼 [sql] view plain copy print ? select t.t_dept, t.t_project, sum(t.t_amount) from te t   group by grouping sets ((t.t_dept, t.t_project), t.t_dept);  
select t.t_dept, t.t_project, sum(t.t_amount) from te tgroup by grouping sets ((t.t_dept, t.t_project), t.t_dept);


結果如下: 

 

6.用t.t_dept, t.t_project,並使用t.t_dept來做小計,並做一次總計

Sql代碼 [sql] view plain copy print ? select t.t_dept, t.t_project, sum(t.t_amount) from te t   group by grouping sets ((t.t_dept, t.t_project), t.t_dept, null);  
select t.t_dept, t.t_project, sum(t.t_amount) from te tgroup by grouping sets ((t.t_dept, t.t_project), t.t_dept, null);


結果如下:






7.使用grouping(欄位)

Sql代碼 [sql] view plain copy print ? select grouping(t.t_dept),t.t_dept, t.t_project, sum(t.t_amount) from te t   group by grouping sets ((t.t_dept, t.t_project), t.t_dept, null);  
select grouping(t.t_dept),t.t_dept, t.t_project, sum(t.t_amount) from te tgroup by grouping sets ((t.t_dept, t.t_project), t.t_dept, null);




結果如下:



注意: 在預存程序中null不會正確執行 需要改成()

Sql代碼 [sql] view plain copy print ? select grouping(t.t_dept),t.t_dept, t.t_project, t.t_type, sum(t.t_amount) from te t      group by grouping sets ((t.t_dept, t.t_project,t.t_type), (t.t_dept,t.t_project),t.t_dept, ());   

select grouping(t.t_dept),t.t_dept, t.t_project, t.t_type, sum(t.t_amount) from te t   group by grouping sets ((t.t_dept, t.t_project,t.t_type), (t.t_dept,t.t_project),t.t_dept, ()); 


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.