一、Oracle rollup函数简介
- Oracle Rollup函数是一种用于创建汇总数据的函数,它可以根据给定的列来对查询结果进行汇总,生成多行汇总数据。
- Rollup函数使用一个或多个列作为参数,根据这些列进行数据汇总。这些列可以是分组列或汇总列。Rollup函数会生成多个组合来对数据进行汇总,从而生成多行汇总数据。Rollup函数中最后一个参数可以是NULL,表示对所有分组列进行汇总。
- 当我们在做报表统计的时候,很多时候需要用到‘合计’这个功能,rollup函数可以实现这样的功能。
Rollup函数的基本语法
以下是Rollup函数的基本语法:
SELECT column1, column2, ...
,ROLLUP(column_n)
FROM table_name
GROUP BY column1
,column2, ...
,column_n
在上述语法中,column_n是用于汇总的列,这些列也可以是分组列,它们必须在GROUP BY子句中出现。
二、Oracle rollup函数使用范例
以下是一个简单的示例,说明如何使用Rollup函数进行数据汇总。
2.1、测试数据
测试数据以scoot schema下的表来进行,例如下面的查询语句:
SELECT d.dname
,e.*
FROM scott.emp e
LEFT JOIN scott.dept d
ON e.deptno = d.deptno;
查询结果为:
2.1、Rollup函数进行数据汇总
根据部门名称(dname)、工种(job)来分别汇总。
SELECT d.dname
,e.job
,SUM(e.sal)
FROM scott.emp e
LEFT JOIN scott.dept d
ON e.deptno = d.deptno
GROUP BY ROLLUP(d.dname
,e.job);
执行结果如下:
可以发现,首选分部门名称(dname)来汇总工种(job)的销售额总和sum(sal),每个部门统计完后,最后进行所有汇总。