oracle 小计合计之 group by grouping sets

本文介绍了一个利用GroupingSets进行多维度分组的例子。通过展示SQL查询语句及其结果,详细解释了如何根据部门编号(deptno)、员工编号(empno)和员工姓名(ename)设置不同的分组,并计算薪资总和(total_sal)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过grouping sets 设置多个分组,网上看到的一个例子:

SQL> SELECT CASE
  2           WHEN a.deptno IS NULL THEN
  3            '合计'
  4           WHEN a.deptno IS NOT NULL AND a.empno IS NULL THEN
  5            '小计'
  6           ELSE
  7            '' || a.deptno
  8         END deptno,
  9         a.empno,
 10         a.ename,
 11         SUM(a.sal) total_sal
 12    FROM scott.emp a
 13  GROUP BY GROUPING SETS((a.deptno),(a.deptno, a.empno, a.ename),());

DEPTNO                                   EMPNO ENAME       TOTAL_SAL
---------------------------------------- ----- ---------- ----------
10                                        7782 CLARK            2450
10                                        7839 KING             5000
10                                        7934 MILLER           1300
小计                                                            8750
20                                        7369 SMITH             800
20                                        7566 JONES            2975
20                                        7788 SCOTT            3000
20                                        7876 ADAMS            1100
20                                        7902 FORD             3000
小计                                                           10875
30                                        7900 JAMES             950
30                                        7499 ALLEN            1600
30                                        7521 WARD             1250
30                                        7654 MARTIN           1250
30                                        7698 BLAKE            2850
30                                        7844 TURNER           1500
小计                                                            9400
合计                                                           29025

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值