Oracle packet Subtotal total sample (using the grouping sets)

Transfer: https://www.cnblogs.com/xiaojianblogs/p/8047036.html

1. Start by creating a table 

Sql Code
[sql]  view plain  copy
 
  1. create table TE  
  2. (  
  3.   ID        VARCHAR2(2),  
  4.   T_CODE    VARCHAR2(4),  
  5.   T_NAME    VARCHAR2(4),  
  6.   T_AMOUNT  INTEGER,  
  7.   T_DEPT    VARCHAR2(4),  
  8.   T_PROJECT VARCHAR2(4),  
  9.   T_TYPE    VARCHAR2(1)  
  10. )  



2. The input data are as follows: 

Sql Code
[sql]  view plain copy  
 
  1. insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)  
  2. values ( '. 1'  '. 1'  '. 1', 10,  'headquarters',  '90',  '0');  
  3.   
  4. insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)  
  5. values ( '2',  '2',  '2', 20 is,  'headquarters',  '70',  '0');  
  6.   
  7. insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)  
  8. values ('3', '3', '3', 30, '分1', '60', '0');  
  9.   
  10. insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)  
  11. values ('4', '4', '4', 40, '分1', '50', '0');  
  12.   
  13. insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)  
  14. values ('5', '5', '5', 50, '分2', '40', '0');  
  15.   
  16. insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)  
  17. values ('6', '6', '6', 60, '分2', '30', '0');  



3. Query View full table

  1. [java]  view plain  copy
     
    1. select * from te;  





    4. t.t_dept, t.t_project group query 

Sql Code
[sql]  view plain  copy
 
  1. select t.t_dept, t.t_project, sum(t.t_amount) from te t  
  2. group by t.t_dept, t.t_project;  



The results are as follows: 



5. t.t_dept, t.t_project, using t.t_dept do Subtotal 

Sql Code
[sql]  view plain copy  
 
  1. select t.t_dept, t.t_project, sum(t.t_amount) from te t  
  2. group by grouping sets ((t.t_dept, t.t_project), t.t_dept);  



The results are as follows: 

 

6. With t.t_dept, t.t_project, and use t.t_dept do subtotals, totals and do a 

Sql Code
[sql]  view plain copy  
 
  1. select t.t_dept, t.t_project, sum(t.t_amount) from te t  
  2. group by grouping sets ((t.t_dept, t.t_project), t.t_dept, null);  



The results are as follows: 






7. GROUPING (field) 

Sql Code
[sql]  view plain  copy
 
  1. select grouping(t.t_dept),t.t_dept, t.t_project, sum(t.t_amount) from te t  
  2. group by grouping sets ((t.t_dept, t.t_project), t.t_dept, null);  




The results are as follows: 



Note: In the storage process is not executed correctly null need to change ()
as 

Sql Code
[sql]  view plain copy  
 
  1. select grouping(t.t_dept),t.t_dept, t.t_project, t.t_type, sum(t.t_amount) from te t     
  2. group by grouping sets ((t.t_dept, t.t_project,t.t_type), (t.t_dept,t.t_project),t.t_dept, ());   

Guess you like

Origin www.cnblogs.com/sharpest/p/11240345.html