Oracle
SQL LOADER导入数据
用户授权表与权限回收
行列转置
SQLPLUS导出数据(SPOOL)
存储过程记录执行异常日志
查看对象创建时间
停止正在执行的DBMS_JOB
表死锁查询
查看正在执行的sql语句
数组,自定义类型
查看最后一次DML的时间
递归(CONNECT BY)
时间间隔(1h2m3s)
REGEXP_SUBSTR行变列
TRANSLATE函数
执行动态SQL
LISTAGG和WM_CONCAT函数列合并为行
表统计分析
表空间大小统计
收缩表段(shrink space)
集合类型
LIKE操作转义
分析函数(窗口函数)
高级分组 ROOLUP、CUBE、GROUPING SETS
SYS_CONTEXT()函数
进制转换
创建DBMS_JOB
执行超长的动态DDL语句
查询占用空间前100的数据表
MERGE 语句使用(UPSERT)
随机生成密码
Scheduler job
递归获取组织的全称
执行job和停止job
本站点使用 MrDoc 构建
-
+
首页
高级分组 ROOLUP、CUBE、GROUPING SETS
# ROOLUP函数 多次group by需要union时考虑使用 官方说明: * https://docs.oracle.com/cd/E11882_01/server.112/e25554/aggreg.htm#DWHSG8634 * https://docs.oracle.com/database/121/DWHSG/preface.htm#DWHSG8052 逐一递减 ROLLUP(A,B,C) <==> A,B,C A,B A NULL ```SQL SELECT DEPTNO, JOB, SUM(SAL) SAL FROM EMP GROUP BY ROLLUP(DEPTNO), JOB; SELECT DEPTNO, JOB, SUM(SAL) SAL FROM EMP GROUP BY DEPTNO, ROLLUP(JOB); SELECT DEPTNO, JOB, SUM(SAL) SAL FROM EMP GROUP BY ROLLUP(DEPTNO, JOB); ``` # CUBE函数 交叉所有组合 CUBE(A,B,C) <==> A、B、C A、B A、C A B、C B C NULL ```SQL SELECT DEPTNO,job, SUM(SAL) SAL FROM EMP GROUP BY CUBE(DEPTNO,job); SELECT DEPTNO,job, SUM(SAL) SAL FROM EMP GROUP BY CUBE(DEPTNO),job; ``` # GROUPING SETS函数 (A,B,C) <==> A B C (A,B,ROLLUP(C,D)) <==> A B ROLLUP(C,D) ```SQL SELECT DEPTNO,job,mgr, SUM(SAL) SAL FROM EMP GROUP BY GROUPING SETS(DEPTNO,mgr,NULL),job; ``` ```SQL --GROUPING SELECT CASE WHEN GROUPING(deptno) = '1' THEN '所有部门' ELSE to_char(DEPTNO) END AS dempno,job, SUM(SAL) SAL FROM EMP GROUP BY CUBE(DEPTNO),job --GROUPING_ID 例如:grouping(A) = 0 ; grouping(B) = 1; 则:grouping_id(A,B) = (01) = 1; grouping_id(B,A) = (10) = 2; --GROUP_ID GROUP_ID函数可用于消除GROUP BY子句返回的重复记录。 GROUP_ID()不接受任何参数。 如果某个特定的分组重复出现n次,那么GROUP_ID()返回从0到n-1之间的一个整数 ```
vleity
2025年5月17日 17:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码