通过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
分享到:
相关推荐
GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的三种样式:GROUP BY、GROUP BY ROLLUP、GROUP BY CUBE、GROUP BY GROUPING SETS。 1. GROUP BY 语句 GROUP BY 语句是最基本的分组语句,它可以根据...
与`GROUP BY ROLLUP`和`GROUP BY CUBE`相比,`GROUPING SETS`更具有选择性,可以精确地控制生成的汇总组。`ROLLUP`生成所有可能的子集,而`CUBE`则生成所有可能的组合,这两者可能会产生大量的结果,尤其是在处理多...
GROUP BY GROUPING SETS ((cgicode), (stockyear, stockmonth)) ORDER BY cgicode; ``` 这里指定了两个分组集,一个是仅按`cgicode`分组,另一个是按`stockyear`和`stockmonth`组合分组。查询结果将只包括这两个...
GROUP BY GROUPING SETS ((column1), (column2, column3), (column1, column2, column3)); ``` **特点:** - 用户可以指定任意数量的分组集合,每个集合包含需要汇总的列。 - 可以根据业务需求灵活地定义不同的分组...
《精通Oracle10编程》是一本深入探讨Oracle数据库10g版本编程的参考资料,适合对数据库有基础了解并希望进一步提升Oracle技术的读者。Oracle作为全球广泛使用的大型关系型数据库管理系统,其10g版本在功能和性能上都...
在SQL查询中,Grouping Sets是一种高级的分组方法,它允许用户一次性执行多个不同的分组操作,而不需要写多个独立的GROUP BY语句。这个功能在数据分析和在线分析处理(OLAP)中非常有用,因为它能高效地生成汇总数据...
1. `GROUP BY a, b` 相当于 `GROUP BY GROUPING SETS ((a, b))`,即简单的列分组。 2. `GROUP BY ROLLUP(a, b)` 提供了预定义的分组集,包括所有可能的子集,如 `(a, b)`, `(a)`, `(b)`, `()`(空集)。 3. `GROUP ...
GROUPING函数可以用来确定某个值是否是由于GROUP BY或GROUPING SETS产生的汇总行。它返回1表示汇总,0表示具体行。 在实际应用中,这些扩展功能可以帮助我们更有效地分析数据,比如在报告和统计分析中。通过熟练...
GROUP BY GROUPING SETS ((a, b), (c, d)); ``` 这条语句将对 dept 表中的数据进行分组统计,首先按照 a 和 b 列进行分组,然后按照 c 和 d 列进行分组,并对每个组进行 SUM(e) 的聚合计算。 Grouping Sets 的优点...
- **GROUP BY GROUPING SETS((expr1, expr2, ...), (expr3, expr4, ...))**:创建指定的分组集。 #### 三、`GROUPING`函数的实际应用 为了更好地理解`GROUPING`函数的应用场景,我们可以通过一个具体的例子来进行...
GROUP BY GROUPING SETS ((product_id, supplier_id), (product_id)); ``` 在这个查询中,GROUPING SETS((product_id, supplier_id), (product_id))包含了两层分组:一层是按产品ID和供应商ID分组,另一层只按产品...
group by扩展包括 rollup、cube、grouping、grouping sets的用法和说明
SELECT department, AVG(salary) FROM employees GROUP BY GROUPING SETS(department, (department, job)); 这条语句将返回每个部门的薪资平均值,并且返回每个部门和工作岗位的薪资平均值。 Oracle 聚合函数及其...
GROUP BY GROUPING SETS ((a.deptno), (a.deptno, a.empno, a.ename), ()); ``` **解析:** - `GROUPING SETS` 用于指定分组的多种模式,此处包括按照`deptno`分组、按照`deptno`, `empno`, `ename`分组以及整体...
- `GROUP BY GROUPING SETS`是`ROLLUP`和`CUBE`的组合,可自定义分组。 了解这些基本规则和用法后,你可以根据业务需求灵活运用`GROUP BY`来分析和汇总数据。记得在实际操作中,确保遵守上述规则,以避免SQL语法...
- `GROUP BY GROUPING SETS` 是一个强大的分组功能,可以对数据进行多种组合的分组。 - 上述示例查询了不同部门和职位下的平均薪资。 - 结果展示了几种不同的分组情况,如按部门分组(`DEPTNO`)、按职位分组(`JOB`...
Rollup函数用于生成多级汇总数据,它可以创建一个类似于SQL GROUP BY语句的“GROUP BY GROUPING SETS”的效果。例如,可以计算每个区域、每个网络类型以及整个数据集的总费用。 Cube函数则更进一步,它不仅提供...
### Greenplum中的Grouping Sets实现 #### Greenplum简介 Greenplum是Pivotal公司的一款基于MPP(Massively Parallel Processing)架构的数据仓库产品,它能够在大规模数据集上提供快速的数据分析能力。Greenplom...