- 需求:sql通过分组查询后,对每组数据进行小计,然后对总的数据总计
- rollup的作用:
用 ROLLUP 汇总数据,在生成包含小计和合计的报表时,ROLLUP 运算符很有用。 - 例子:
SQL> select deptno,job,sum(sal) from emp group by deptno,job order by deptno;
2 单独使用分组查询
3
4 DEPTNO JOB SUM(SAL)
5
6 10 CLERK 1300
7 10 MANAGER 2450
8 10 PRESIDENT 5000
9 20 ANALYST 6000
10 20 CLERK 1900
11 20 MANAGER 2975
12 30 CLERK 950
13 30 MANAGER 2850
14 30 SALESMAN 5600
15
16 已选择9行。
使用rollup函数分组:
SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job) order by deptno;
19
20 DEPTNO JOB SUM(SAL)
21
22 10 CLERK 1300 第一次分组的sum总和计算
23 10 MANAGER 2450
24 10 PRESIDENT 5000
25 10 8750 第二次分组添加的计算(分组小计)
26 20 ANALYST 6000
27 20 CLERK 1900
28 20 MANAGER 2975
29 20 10875
30 30 CLERK 950
31 30 MANAGER 2850
32 30 SALESMAN 5600
33 30 9400
34 29025 第三次分组添加的计算(总计)
35 所以rollup函数进行多次分组计算
36
37 已选择13行。
参考博客