SQL> SELECT E.DEPARTMENT_ID DID,
2 E.JOB_ID JOB,
3 E.MANAGER_ID MID,
4 SUM(E.SALARY) SUM_SAL,
5 COUNT(E.EMPLOYEE_ID) CNT,
6 GROUP_ID() GG
7 FROM EMPLOYEES E
8 WHERE E.JOB_ID IN (‘ST_CLERK‘, ‘SH_CLERK‘, ‘MK_REP‘, ‘MK_MAN‘)
9 GROUP BY GROUPING SETS((E.DEPARTMENT_ID, E.JOB_ID), E.MANAGER_ID, E.JOB_ID)
10 ORDER BY E.DEPARTMENT_ID, E.JOB_ID, E.MANAGER_ID;
DID JOB MID SUM_SAL CNT GG
----- ---------- ------- ---------- ---------- ----------
20 MK_MAN 13000 1 0
20 MK_REP 6000 1 0
50 SH_CLERK 64300 20 0
50 ST_CLERK 55700 20 0
MK_MAN 13000 1 0
MK_REP 6000 1 0
SH_CLERK 64300 20 0
ST_CLERK 55700 20 0
100 13000 1 0
120 22100 8 0
121 25400 8 0
122 23600 8 0
123 25900 8 0
124 23000 8 0
201 6000 1 0
GROUPING SETS与GROUP_ID
时间: 2024-10-07 03:28:59
GROUPING SETS与GROUP_ID的相关文章
oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO
干oracle 047文章12当问题,经验group by 声明.因此邂逅group by rollup,decode,grouping,nvl,nvl2,nullif,RATIO_TO_REPORT等一下. 1. decode 与if...then,case...when...这类流数据语句功能差点儿相同 decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义例如以下: IF 条件=值1 THEN RETURN(值1) ELSIF 条件=值2 TH
TSql Grouping Sets
TSql Group by clause主要有4种类型: Group by a,b group by rollup(a,b) group by cube(a,b) group by grouping sets((),(a),(a,b),rollup(a,b),cube(a,b)) rollup 和cube的作用是预定义grouping sets(分组集),rollup(a,b) 预定义的分组集是(),(a),(a,b);cube(a,b)预定义的的分组集是(),(a),(b),(a,b). gr
Oracle中group by 的扩展函数rollup、cube、grouping sets
Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollup.cube.grouping sets,分别介绍如下: 1.rollup 对数据库表emp,假设其中两个字段名为a,b,c. 如果使用group by rollup(a,b),首先会对(a,b)进行group by ,然后对 a 进行 group by ,最后对全表进行 group by 操作. 如下查询结果: 查询语句 Select deptno,job,sum(sal) from emp group by r
GROUPING SETS、CUBE、ROLLUP
其实还是写一个Demo 比较好 USE tempdb IF OBJECT_ID( 'dbo.T1' , 'U' )IS NOT NULL BEGIN DROP TABLE dbo.T1; END; GO CREATE TABLE dbo.T1 ( id INT , productName VARCHAR(200) , price MONEY , num INT , amount INT , operatedate DATETIME ) GO DECLARE @i INT DECLARE @ran
SQL Server2008 程序设计 汇总 GROUP BY,WITH ROLLUP,WITH CUBE,GROUPING SETS(..)
--SQL Server2008 程序设计 汇总 GROUP BY ,WITH ROLLUP WITH CUBE GROUPING SET(..) /******************************************************************************** *主题:SQL Server2008 程序设计 汇总 group by ,WITH ROLLUP WITH CUBE *说明:本文是个人学习的一些笔记和个人愚见 * 有很多
[Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets
常常写SQL语句的人应该知道Group by语句的主要使用方法是进行分类汇总,以下是一种它最常见的使用方法(依据部门.职位分别统计业绩): SELECT a.dname,b.job,SUM(b.sal) sum_sal FROM dept a,emp b WHERE a.deptno = b.deptno GROUP BY a.dname,b.job; DNAME JOB SUM_SAL -------------- --------- ---------- SALES MANAGER 2850
TSQL 分组集(Grouping Sets)
分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回的select 子句相同,由于select子句只能引用分组列,因此,在单个分组中缺失的分组列,TSQL返回NULL值. TSQL使用 group by 子句分组,有4种不同的语法: group by a,b group by rollup(a,b) group by cube(a,b) group
Grouping Sets:CUBE和ROLLUP从句
在上一篇文章里我讨论了SQL Server里Grouping Sets的功能.从文中的例子可以看到,通过简单定义需要的分组集是很容易进行各自分组.但如果像从所给的列集里想要有所有可能的分布——即所谓的幂集(Power Set),要怎么做呢? 当然,你可以用grouping set的语法功能来手动生成幂集,但那需要写一大堆的代码.因此今天我向你展示下grouping set功能支持的2个从句:CUBE和ROLLUP从句. CUBE从句 使用CUBE从句,对于提供的列集,你可以生成所有可能的分组集.
SQL Server里Grouping Sets的威力
在SQL Server里,你有没有想进行跨越多个列/纬度的聚集操作,不使用SSAS许可(SQL Server分析服务).我不是说在生产里使用开发版,也不是说安装盗版SQL Server. 不可能的任务?未必,因为通过SQL Server里所谓的Grouping Sets就可以.在这篇文章里我会给你概括介绍下Grouping Sets,使用它们可以实现哪类查询,什么是它们的性能优势. 使用Grouping Sets的聚合 假设你有个订单表,你想进行跨多个分组的T-SQL聚集查询.在Adventur