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.录入数据如下:
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.查询全表查看
select * from te;
4.用t.t_dept, t.t_project进行分组查询
select t.t_dept, t.t_project, sum(t.t_amount) from te t
group by t.t_dept, t.t_project;
结果如下:
5.用t.t_dept, t.t_project,并使用t.t_dept来做小计
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);
结果如下:
6.用t.t_dept, t.t_project,并使用t.t_dept来做小计,并做一次总计
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);
结果如下:
7.使用grouping(字段)
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);
结果如下:
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)
values ('1', '1', '1', 10, '总部', '90', '1');
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)
values ('2', '2', '2', 20, '总部', '70', '1');
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)
values ('3', '3', '3', 30, '分1', '60', '1');
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)
values ('4', '4', '4', 40, '分1', '50', '1');
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)
values ('5', '5', '5', 50, '分2', '40', '1');
insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, T_PROJECT, T_TYPE)
values ('6', '6', '6', 60, '分2', '30', '1');
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, null);
注意: 在存储过程中null不会正确执行 需要改成()
如
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, ());
完!
- 大小: 27.9 KB
- 大小: 18.2 KB
- 大小: 23.1 KB
- 大小: 25.8 KB
- 大小: 33.6 KB
- 大小: 71.7 KB
分享到:
相关推荐
使用GROUP BY语句时,你一般得不到多级...可以用GROUP BY GROUPING SETS来代替GROUP BY CUBE。你可以应用来指定你感兴趣的总数组合。因为它不必计算它不需要集合(也不会产生太多结果),所以对SQL引擎来说更为高效。
GROUP BY子句(rollup,cube,grouping sets)实例说明
rollup,cube,grouping sets()的个人理解 其中关于这三个的各种情况,举例论证这三个的区别。
rollup cube grouping sets的用法 详细,讲述与实例想结合
grouping or grouping_id
extJs grouping分组源码 类似qq分组功能
sql学习 grouping sets 之另一需求展现.sql
PGConf.CN2019大会资料 培训PPT--5-陈金豹--Grouping Sets
oracle基础编程资料
GROUPING SETS分组 74 Oracle外部程序触发 75 Oracle数据库的备份与恢复 77 Oracle分区功能提高应用程序性能 79 Oracle数据库处理时间基本准则 81 入侵Oracle数据库常用操作命令 82 Oracle数据库优化及其应用程序...
主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组
主要是在存储过程中grouping 的使用方法
group by扩展包括 rollup、cube、grouping、grouping sets的用法和说明
lucene-grouping-3.5.0.jar分组统计+分类统计插件 分组统计+分类统计
NULL 博文链接:https://caohong286.iteye.com/blog/1260817
GROUPING SETS: Example 3-15 Composite Columns 3-17 Composite Columns: Example 3-19 Concatenated Groupings 3-21 Concatenated Groupings Example 3-22 Summary 3-23 Practice 3 Overview 3-24 4 Advanced ...
NULL 博文链接:https://caohong286.iteye.com/blog/1266483
oracle 聚合函数的扩展使用 ...2.CUBE子句也是对GROUP BY子句进行扩展,返回CUBE中所有列组合的小计信息,同时在最后显示总计信息。 3.GROUPING()函数与ROLLUP、CUBE的结合使用 4.GROUPING_ID()函数的使用
3,使用grouping sets 自定义分组集单个分组的集合是分组集, 分组集 grouping sets((a),(a,b)) :表示两个分组 (a,b),
主要介绍了Java8 stream 中利用 groupingBy 进行多字段分组求和案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧