码迷,mamicode.com
首页 > 数据库 > 详细

Oracle分组小计、总计示例(grouping sets的使用)

时间:2017-12-16 18:38:44      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:分组   data-   数据   create   nbsp   clip   word   csdn   分享   

1.首先创建一个表 

Sql代码
[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.录入数据如下: 

Sql代码
[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, ‘总部‘, ‘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, ‘总部‘, ‘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.查询全表查看

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



    技术分享图片

    4.用t.t_dept, t.t_project进行分组查询 

Sql代码
[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;  



结果如下: 

技术分享图片

5.用t.t_dept, t.t_project,并使用t.t_dept来做小计 

Sql代码
[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);  



结果如下: 
技术分享图片
 

6.用t.t_dept, t.t_project,并使用t.t_dept来做小计,并做一次总计 

Sql代码
[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);  



结果如下: 


技术分享图片



7.使用grouping(字段) 

Sql代码
[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);  




结果如下: 



技术分享图片

注意: 在存储过程中null不会正确执行 需要改成()
如 

Sql代码
[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, ());   

Oracle分组小计、总计示例(grouping sets的使用)

标签:分组   data-   数据   create   nbsp   clip   word   csdn   分享   

原文地址:http://www.cnblogs.com/xiaojianblogs/p/8047036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!