`
congpeixue
  • 浏览: 275538 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

GROUP BY GROUPING SETS((),

    博客分类:
  • SQL
SQL 
阅读更多
通过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子句(rollup,cube,grouping sets)实例说明

    GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的三种样式:GROUP BY、GROUP BY ROLLUP、GROUP BY CUBE、GROUP BY GROUPING SETS。 1. GROUP BY 语句 GROUP BY 语句是最基本的分组语句,它可以根据...

    Oracle中用GROUPING SETS分组自定义汇总

    与`GROUP BY ROLLUP`和`GROUP BY CUBE`相比,`GROUPING SETS`更具有选择性,可以精确地控制生成的汇总组。`ROLLUP`生成所有可能的子集,而`CUBE`则生成所有可能的组合,这两者可能会产生大量的结果,尤其是在处理多...

    rollup,cube,grouping sets()的个人理解

    GROUP BY GROUPING SETS ((cgicode), (stockyear, stockmonth)) ORDER BY cgicode; ``` 这里指定了两个分组集,一个是仅按`cgicode`分组,另一个是按`stockyear`和`stockmonth`组合分组。查询结果将只包括这两个...

    rollup cube grouping sets的用法

    GROUP BY GROUPING SETS ((column1), (column2, column3), (column1, column2, column3)); ``` **特点:** - 用户可以指定任意数量的分组集合,每个集合包含需要汇总的列。 - 可以根据业务需求灵活地定义不同的分组...

    精通Oracle10编程

    《精通Oracle10编程》是一本深入探讨Oracle数据库10g版本编程的参考资料,适合对数据库有基础了解并希望进一步提升Oracle技术的读者。Oracle作为全球广泛使用的大型关系型数据库管理系统,其10g版本在功能和性能上都...

    详解SQL中Groupings Sets 语句的功能和底层实现逻辑.doc

    在SQL查询中,Grouping Sets是一种高级的分组方法,它允许用户一次性执行多个不同的分组操作,而不需要写多个独立的GROUP BY语句。这个功能在数据分析和在线分析处理(OLAP)中非常有用,因为它能高效地生成汇总数据...

    TSQL 分组集1

    1. `GROUP BY a, b` 相当于 `GROUP BY GROUPING SETS ((a, b))`,即简单的列分组。 2. `GROUP BY ROLLUP(a, b)` 提供了预定义的分组集,包括所有可能的子集,如 `(a, b)`, `(a)`, `(b)`, `()`(空集)。 3. `GROUP ...

    ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句

    GROUPING函数可以用来确定某个值是否是由于GROUP BY或GROUPING SETS产生的汇总行。它返回1表示汇总,0表示具体行。 在实际应用中,这些扩展功能可以帮助我们更有效地分析数据,比如在报告和统计分析中。通过熟练...

    Oracle分组统计

    GROUP BY GROUPING SETS ((a, b), (c, d)); ``` 这条语句将对 dept 表中的数据进行分组统计,首先按照 a 和 b 列进行分组,然后按照 c 和 d 列进行分组,并对每个组进行 SUM(e) 的聚合计算。 Grouping Sets 的优点...

    oracle中的grouping

    - **GROUP BY GROUPING SETS((expr1, expr2, ...), (expr3, expr4, ...))**:创建指定的分组集。 #### 三、`GROUPING`函数的实际应用 为了更好地理解`GROUPING`函数的应用场景,我们可以通过一个具体的例子来进行...

    《Pro Oracle SQL》Chapter7 --7.6Eliminate NULLs with the GROUPING() Function

    GROUP BY GROUPING SETS ((product_id, supplier_id), (product_id)); ``` 在这个查询中,GROUPING SETS((product_id, supplier_id), (product_id))包含了两层分组:一层是按产品ID和供应商ID分组,另一层只按产品...

    group by的扩展

    group by扩展包括 rollup、cube、grouping、grouping sets的用法和说明

    Oracle聚合函数及其扩展使用

    SELECT department, AVG(salary) FROM employees GROUP BY GROUPING SETS(department, (department, job)); 这条语句将返回每个部门的薪资平均值,并且返回每个部门和工作岗位的薪资平均值。 Oracle 聚合函数及其...

    sql server 2000数据库常有查询语句

    GROUP BY GROUPING SETS ((a.deptno), (a.deptno, a.empno, a.ename), ()); ``` **解析:** - `GROUPING SETS` 用于指定分组的多种模式,此处包括按照`deptno`分组、按照`deptno`, `empno`, `ename`分组以及整体...

    Oracle中分组查询group by用法规则详解

    - `GROUP BY GROUPING SETS`是`ROLLUP`和`CUBE`的组合,可自定义分组。 了解这些基本规则和用法后,你可以根据业务需求灵活运用`GROUP BY`来分析和汇总数据。记得在实际操作中,确保遵守上述规则,以避免SQL语法...

    Oracle个人学习笔记

    - `GROUP BY GROUPING SETS` 是一个强大的分组功能,可以对数据进行多种组合的分组。 - 上述示例查询了不同部门和职位下的平均薪资。 - 结果展示了几种不同的分组情况,如按部门分组(`DEPTNO`)、按职位分组(`JOB`...

    oracle分析函数介绍

    Rollup函数用于生成多级汇总数据,它可以创建一个类似于SQL GROUP BY语句的“GROUP BY GROUPING SETS”的效果。例如,可以计算每个区域、每个网络类型以及整个数据集的总费用。 Cube函数则更进一步,它不仅提供...

    PGConf.CN2019大会资料 培训PPT--5-陈金豹--Grouping Sets

    ### Greenplum中的Grouping Sets实现 #### Greenplum简介 Greenplum是Pivotal公司的一款基于MPP(Massively Parallel Processing)架构的数据仓库产品,它能够在大规模数据集上提供快速的数据分析能力。Greenplom...

Global site tag (gtag.js) - Google Analytics