- 浏览: 771886 次
- 性别:
- 来自: 广州
文章分类
最新评论
oracle 中 rollup、cube、grouping 使用详解 -- 使用oracle 样例表演示 转自namesliu
-- 使用oracle 的样列库,演示 rollup, cube, grouping 的用法与使用场景
--- ROLLUP , 为了理解分组的成员数量,我增加了 分组的计数 COUNT(SAL)
SELECT E1.DEPTNO,
JOB,
TO_CHAR (E1.HIREDATE, 'YYYY-MM-DD'),
SUM (SAL),
COUNT (SAL)
FROM emp e1
GROUP BY ROLLUP (E1.DEPTNO, E1.JOB, E1.HIREDATE);
/*
分组情况为:
DEPTNO,job,HIREDATE 第 1 种分组 (A,B,C)
DEPTNO,job, 第 2 种分组 (A,B)
DEPTNO 第 3 种分组 (A)
总分一个组
-- 结果如下: 并进行部分数据解释,以便读者理解
DEPTNO JOB TO_CHAR(E1 SUM(SAL) COUNT(SAL)
---------- --------- ---------- ---------- ----------
10 CLERK 1982-01-23 1300 1 (A,B,C) -- 10号部门,CLERK工种,入职日期为1982-01-23,只有一个成员 工资和为:1300
10 CLERK 1300 1 (A,B) -- 10号部门,CLERK工种,只有一个成员 工资和为:1300
10 MANAGER 1981-06-09 2450 1 (A,B,C) -- 与第一条记录相似的分析
10 MANAGER 2450 1 (A,B)
10 PRESIDENT 1981-11-17 5000 1 (A,B,C)
10 PRESIDENT 5000 1 (A,B,C)
10 8750 3 (A) -- 10号部门有3个成员,工资总计为8750
20 CLERK 1980-12-17 800 1
20 CLERK 800 1
20 ANALYST 1981-12-03 3000 1
20 ANALYST 3000 1
20 MANAGER 1981-04-02 2975 1
20 MANAGER 2975 1
20 6775 3
30 CLERK 1981-12-03 950 1
30 CLERK 950 1
30 MANAGER 1981-05-01 2850 1
30 MANAGER 2850 1
30 SALESMAN 1981-02-20 1600 1
30 SALESMAN 1981-02-22 1250 1
30 SALESMAN 1981-09-08 1500 1
30 SALESMAN 1981-09-28 1250 1
30 SALESMAN 5600 4 (A,B) -- 30号部门,SALESMAN工种,有4个成员 工资和为:5600
30 9400 6 (A) -- 30号部 有6个成员, 工资总计为:9400
24925 12 () -- 所有部门工资总和为:24925
*/
--- CUBE , 为了理解分组的成员数量,我增加了 分组的计数 COUNT(SAL)
SELECT E1.DEPTNO,
JOB,
TO_CHAR (E1.HIREDATE, 'YYYY-MM-DD'),
SUM (SAL),
COUNT (SAL)
FROM emp e1
GROUP BY CUBE (E1.DEPTNO, E1.JOB, E1.HIREDATE);
/*
分组原则:
GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。
-- 结果 : 并进行部分数据解释,以便读者理解
DEPTNO JOB TO_CHAR(E1 SUM(SAL) COUNT(SAL)
---------- --------- ---------- ---------- ----------
24925 12 -- 全表分组,工资总合:24925
1980-12-17 800 1
1981-02-20 1600 1
1981-02-22 1250 1
1981-04-02 2975 1
1981-05-01 2850 1
1981-06-09 2450 1
1981-09-08 1500 1
1981-09-28 1250 1
1981-11-17 5000 1
1981-12-03 3950 2 (C) 1981-12-03 入职的有2位员工,工资总计3950
1982-01-23 1300 1
CLERK 3050 3 (B) CLERK 工种,共计有3位员工,工资总计:3050
CLERK 1980-12-17 800 1
CLERK 1981-12-03 950 1
CLERK 1982-01-23 1300 1
ANALYST 3000 1
ANALYST 1981-12-03 3000 1
MANAGER 8275 3
MANAGER 1981-04-02 2975 1
MANAGER 1981-05-01 2850 1
MANAGER 1981-06-09 2450 1
SALESMAN 5600 4
SALESMAN 1981-02-20 1600 1
SALESMAN 1981-02-22 1250 1
SALESMAN 1981-09-08 1500 1
SALESMAN 1981-09-28 1250 1
PRESIDENT 5000 1
PRESIDENT 1981-11-17 5000 1
10 8750 3
10 1981-06-09 2450 1
10 1981-11-17 5000 1
10 1982-01-23 1300 1
10 CLERK 1300 1
10 CLERK 1982-01-23 1300 1
10 MANAGER 2450 1
10 MANAGER 1981-06-09 2450 1
10 PRESIDENT 5000 1
10 PRESIDENT 1981-11-17 5000 1
20 6775 3 (A) -- 20号部 有3个成员, 工资总计为:6775
20 1980-12-17 800 1
20 1981-04-02 2975 1
20 1981-12-03 3000 1
20 CLERK 800 1
20 CLERK 1980-12-17 800 1
20 ANALYST 3000 1
20 ANALYST 1981-12-03 3000 1
20 MANAGER 2975 1
20 MANAGER 1981-04-02 2975 1
30 9400 6 (A) -- 30号部 有6个成员, 工资总计为:9400
30 1981-02-20 1600 1
30 1981-02-22 1250 1
30 1981-05-01 2850 1
30 1981-09-08 1500 1
30 1981-09-28 1250 1
30 1981-12-03 950 1
30 CLERK 950 1
30 CLERK 1981-12-03 950 1
30 MANAGER 2850 1
30 MANAGER 1981-05-01 2850 1
30 SALESMAN 5600 4 (A、B) 30号部门, SALESMAN 工种,有4 个成员,工资总计:5600
30 SALESMAN 1981-02-20 1600 1
30 SALESMAN 1981-02-22 1250 1
30 SALESMAN 1981-09-08 1500 1 (A、B、C) 0号部门, SALESMAN 工种,1981-09-08入职,1 个员工,工资总计:1500
30 SALESMAN 1981-09-28 1250 1 (A、B、C) 0号部门, SALESMAN 工种,1981-09-28入职,1 个员工,工资总计:1250
已选择65行。
*/
--- GROUPING函数
/*
GROUPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。
仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。
语法: GROUPING ( column_name )
是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。
返回类型: int
分组用于区分由 CUBE 和 ROLLUP 返回的空值和标准的空值。作为CUBE 或 ROLLUP 操作结果返回的 NULL 是 NULL 的特殊应用。它在结果集内作为列的占位符,意思是"全体"。
*/
-- grouping 样列
SELECT E1.DEPTNO,
JOB,
TO_CHAR (E1.HIREDATE, 'YYYY-MM-DD') HIREDATE,
SUM (SAL),
COUNT (SAL),
GROUPING (E1.DEPTNO) d,
GROUPING (JOB) j,
GROUPING (E1.HIREDATE) h
FROM emp e1
GROUP BY ROLLUP (E1.DEPTNO, E1.JOB, E1.HIREDATE);
/*
-- 结果 : 并进行部分数据解释,以便读者理解
DEPTNO JOB HIREDATE SUM(SAL) COUNT(SAL) D J H
---------- --------- ---------- ---------- ---------- --- --- ---
10 CLERK 1982-01-23 1300 1 0 0 0 所有列都有数据作为分组,所以全为 0
10 CLERK 1300 1 0 0 1 DEPTNO JOB列 有数据,而HIREDATE没有数据,所以 H 列产生的值为:1
10 MANAGER 1981-06-09 2450 1 0 0 0
10 MANAGER 2450 1 0 0 1
10 PRESIDENT 1981-11-17 5000 1 0 0 0
10 PRESIDENT 5000 1 0 0 1
10 8750 3 0 1 1
20 CLERK 1980-12-17 800 1 0 0 0
20 CLERK 800 1 0 0 1
20 ANALYST 1981-12-03 3000 1 0 0 0
20 ANALYST 3000 1 0 0 1
20 MANAGER 1981-04-02 2975 1 0 0 0
20 MANAGER 2975 1 0 0 1
20 6775 3 0 1 1
30 CLERK 1981-12-03 950 1 0 0 0
30 CLERK 950 1 0 0 1
30 MANAGER 1981-05-01 2850 1 0 0 0
30 MANAGER 2850 1 0 0 1
30 SALESMAN 1981-02-20 1600 1 0 0 0
30 SALESMAN 1981-02-22 1250 1 0 0 0
30 SALESMAN 1981-09-08 1500 1 0 0 0
30 SALESMAN 1981-09-28 1250 1 0 0 0
30 SALESMAN 5600 4 0 0 1
30 9400 6 0 1 1
24925 12 1 1 1
*/
-- 应用 grouping
SELECT CASE
WHEN ( GROUPING (E1.DEPTNO) = 0 AND GROUPING (JOB) = 0 AND GROUPING (HIREDATE) = 0)
THEN DEPTNO|| ' '|| JOB|| ' ' || TO_CHAR (HIREDATE, 'YYYY-MM-DD')|| ' subtotal:'
WHEN ( GROUPING (E1.DEPTNO) = 0 AND GROUPING (JOB) = 0 AND GROUPING (HIREDATE) = 1)
THEN DEPTNO || ' ' || JOB || ' subtotal:'
WHEN ( GROUPING (E1.DEPTNO) = 0 AND GROUPING (JOB) = 1 AND GROUPING (HIREDATE) = 1)
THEN DEPTNO || ' subtotal:'
WHEN ( GROUPING (E1.DEPTNO) = 1 AND GROUPING (JOB) = 1 AND GROUPING (HIREDATE) = 1)
THEN 'Total:'
END
"Total",
SUM (SAL), COUNT (SAL)
FROM emp e1
GROUP BY ROLLUP (E1.DEPTNO, E1.JOB, E1.HIREDATE);
-- 结果如下:
/*
Total SUM(SAL) COUNT(SAL)
------------------------------------ ---------- ----------
10 CLERK 1982-01-23 subtotal: 1300 1 (A,B,C) 分组
10 CLERK subtotal: 1300 1 (A,B) 分组
10 MANAGER 1981-06-09 subtotal: 2450 1
10 MANAGER subtotal: 2450 1
10 PRESIDENT 1981-11-17 subtotal: 5000 1
10 PRESIDENT subtotal: 5000 1
10 subtotal: 8750 3 (A) 分组 10号部门,共3个成员,工资总计:8750
20 CLERK 1980-12-17 subtotal: 800 1
20 CLERK subtotal: 800 1
20 ANALYST 1981-12-03 subtotal: 3000 1
20 ANALYST subtotal: 3000 1
20 MANAGER 1981-04-02 subtotal: 2975 1
20 MANAGER subtotal: 2975 1
20 subtotal: 6775 3
30 CLERK 1981-12-03 subtotal: 950 1
30 CLERK subtotal: 950 1
30 MANAGER 1981-05-01 subtotal: 2850 1
30 MANAGER subtotal: 2850 1
30 SALESMAN 1981-02-20 subtotal: 1600 1
30 SALESMAN 1981-02-22 subtotal: 1250 1
30 SALESMAN 1981-09-08 subtotal: 1500 1
30 SALESMAN 1981-09-28 subtotal: 1250 1
30 SALESMAN subtotal: 5600 4
30 subtotal: 9400 6
Total: 24925 12 () 全部总计:12 个成员,工资总计为:24925
已选择25行。
*/
-- 使用oracle 的样列库,演示 rollup, cube, grouping 的用法与使用场景
--- ROLLUP , 为了理解分组的成员数量,我增加了 分组的计数 COUNT(SAL)
SELECT E1.DEPTNO,
JOB,
TO_CHAR (E1.HIREDATE, 'YYYY-MM-DD'),
SUM (SAL),
COUNT (SAL)
FROM emp e1
GROUP BY ROLLUP (E1.DEPTNO, E1.JOB, E1.HIREDATE);
/*
分组情况为:
DEPTNO,job,HIREDATE 第 1 种分组 (A,B,C)
DEPTNO,job, 第 2 种分组 (A,B)
DEPTNO 第 3 种分组 (A)
总分一个组
-- 结果如下: 并进行部分数据解释,以便读者理解
DEPTNO JOB TO_CHAR(E1 SUM(SAL) COUNT(SAL)
---------- --------- ---------- ---------- ----------
10 CLERK 1982-01-23 1300 1 (A,B,C) -- 10号部门,CLERK工种,入职日期为1982-01-23,只有一个成员 工资和为:1300
10 CLERK 1300 1 (A,B) -- 10号部门,CLERK工种,只有一个成员 工资和为:1300
10 MANAGER 1981-06-09 2450 1 (A,B,C) -- 与第一条记录相似的分析
10 MANAGER 2450 1 (A,B)
10 PRESIDENT 1981-11-17 5000 1 (A,B,C)
10 PRESIDENT 5000 1 (A,B,C)
10 8750 3 (A) -- 10号部门有3个成员,工资总计为8750
20 CLERK 1980-12-17 800 1
20 CLERK 800 1
20 ANALYST 1981-12-03 3000 1
20 ANALYST 3000 1
20 MANAGER 1981-04-02 2975 1
20 MANAGER 2975 1
20 6775 3
30 CLERK 1981-12-03 950 1
30 CLERK 950 1
30 MANAGER 1981-05-01 2850 1
30 MANAGER 2850 1
30 SALESMAN 1981-02-20 1600 1
30 SALESMAN 1981-02-22 1250 1
30 SALESMAN 1981-09-08 1500 1
30 SALESMAN 1981-09-28 1250 1
30 SALESMAN 5600 4 (A,B) -- 30号部门,SALESMAN工种,有4个成员 工资和为:5600
30 9400 6 (A) -- 30号部 有6个成员, 工资总计为:9400
24925 12 () -- 所有部门工资总和为:24925
*/
--- CUBE , 为了理解分组的成员数量,我增加了 分组的计数 COUNT(SAL)
SELECT E1.DEPTNO,
JOB,
TO_CHAR (E1.HIREDATE, 'YYYY-MM-DD'),
SUM (SAL),
COUNT (SAL)
FROM emp e1
GROUP BY CUBE (E1.DEPTNO, E1.JOB, E1.HIREDATE);
/*
分组原则:
GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。
-- 结果 : 并进行部分数据解释,以便读者理解
DEPTNO JOB TO_CHAR(E1 SUM(SAL) COUNT(SAL)
---------- --------- ---------- ---------- ----------
24925 12 -- 全表分组,工资总合:24925
1980-12-17 800 1
1981-02-20 1600 1
1981-02-22 1250 1
1981-04-02 2975 1
1981-05-01 2850 1
1981-06-09 2450 1
1981-09-08 1500 1
1981-09-28 1250 1
1981-11-17 5000 1
1981-12-03 3950 2 (C) 1981-12-03 入职的有2位员工,工资总计3950
1982-01-23 1300 1
CLERK 3050 3 (B) CLERK 工种,共计有3位员工,工资总计:3050
CLERK 1980-12-17 800 1
CLERK 1981-12-03 950 1
CLERK 1982-01-23 1300 1
ANALYST 3000 1
ANALYST 1981-12-03 3000 1
MANAGER 8275 3
MANAGER 1981-04-02 2975 1
MANAGER 1981-05-01 2850 1
MANAGER 1981-06-09 2450 1
SALESMAN 5600 4
SALESMAN 1981-02-20 1600 1
SALESMAN 1981-02-22 1250 1
SALESMAN 1981-09-08 1500 1
SALESMAN 1981-09-28 1250 1
PRESIDENT 5000 1
PRESIDENT 1981-11-17 5000 1
10 8750 3
10 1981-06-09 2450 1
10 1981-11-17 5000 1
10 1982-01-23 1300 1
10 CLERK 1300 1
10 CLERK 1982-01-23 1300 1
10 MANAGER 2450 1
10 MANAGER 1981-06-09 2450 1
10 PRESIDENT 5000 1
10 PRESIDENT 1981-11-17 5000 1
20 6775 3 (A) -- 20号部 有3个成员, 工资总计为:6775
20 1980-12-17 800 1
20 1981-04-02 2975 1
20 1981-12-03 3000 1
20 CLERK 800 1
20 CLERK 1980-12-17 800 1
20 ANALYST 3000 1
20 ANALYST 1981-12-03 3000 1
20 MANAGER 2975 1
20 MANAGER 1981-04-02 2975 1
30 9400 6 (A) -- 30号部 有6个成员, 工资总计为:9400
30 1981-02-20 1600 1
30 1981-02-22 1250 1
30 1981-05-01 2850 1
30 1981-09-08 1500 1
30 1981-09-28 1250 1
30 1981-12-03 950 1
30 CLERK 950 1
30 CLERK 1981-12-03 950 1
30 MANAGER 2850 1
30 MANAGER 1981-05-01 2850 1
30 SALESMAN 5600 4 (A、B) 30号部门, SALESMAN 工种,有4 个成员,工资总计:5600
30 SALESMAN 1981-02-20 1600 1
30 SALESMAN 1981-02-22 1250 1
30 SALESMAN 1981-09-08 1500 1 (A、B、C) 0号部门, SALESMAN 工种,1981-09-08入职,1 个员工,工资总计:1500
30 SALESMAN 1981-09-28 1250 1 (A、B、C) 0号部门, SALESMAN 工种,1981-09-28入职,1 个员工,工资总计:1250
已选择65行。
*/
--- GROUPING函数
/*
GROUPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。
仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。
语法: GROUPING ( column_name )
是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。
返回类型: int
分组用于区分由 CUBE 和 ROLLUP 返回的空值和标准的空值。作为CUBE 或 ROLLUP 操作结果返回的 NULL 是 NULL 的特殊应用。它在结果集内作为列的占位符,意思是"全体"。
*/
-- grouping 样列
SELECT E1.DEPTNO,
JOB,
TO_CHAR (E1.HIREDATE, 'YYYY-MM-DD') HIREDATE,
SUM (SAL),
COUNT (SAL),
GROUPING (E1.DEPTNO) d,
GROUPING (JOB) j,
GROUPING (E1.HIREDATE) h
FROM emp e1
GROUP BY ROLLUP (E1.DEPTNO, E1.JOB, E1.HIREDATE);
/*
-- 结果 : 并进行部分数据解释,以便读者理解
DEPTNO JOB HIREDATE SUM(SAL) COUNT(SAL) D J H
---------- --------- ---------- ---------- ---------- --- --- ---
10 CLERK 1982-01-23 1300 1 0 0 0 所有列都有数据作为分组,所以全为 0
10 CLERK 1300 1 0 0 1 DEPTNO JOB列 有数据,而HIREDATE没有数据,所以 H 列产生的值为:1
10 MANAGER 1981-06-09 2450 1 0 0 0
10 MANAGER 2450 1 0 0 1
10 PRESIDENT 1981-11-17 5000 1 0 0 0
10 PRESIDENT 5000 1 0 0 1
10 8750 3 0 1 1
20 CLERK 1980-12-17 800 1 0 0 0
20 CLERK 800 1 0 0 1
20 ANALYST 1981-12-03 3000 1 0 0 0
20 ANALYST 3000 1 0 0 1
20 MANAGER 1981-04-02 2975 1 0 0 0
20 MANAGER 2975 1 0 0 1
20 6775 3 0 1 1
30 CLERK 1981-12-03 950 1 0 0 0
30 CLERK 950 1 0 0 1
30 MANAGER 1981-05-01 2850 1 0 0 0
30 MANAGER 2850 1 0 0 1
30 SALESMAN 1981-02-20 1600 1 0 0 0
30 SALESMAN 1981-02-22 1250 1 0 0 0
30 SALESMAN 1981-09-08 1500 1 0 0 0
30 SALESMAN 1981-09-28 1250 1 0 0 0
30 SALESMAN 5600 4 0 0 1
30 9400 6 0 1 1
24925 12 1 1 1
*/
-- 应用 grouping
SELECT CASE
WHEN ( GROUPING (E1.DEPTNO) = 0 AND GROUPING (JOB) = 0 AND GROUPING (HIREDATE) = 0)
THEN DEPTNO|| ' '|| JOB|| ' ' || TO_CHAR (HIREDATE, 'YYYY-MM-DD')|| ' subtotal:'
WHEN ( GROUPING (E1.DEPTNO) = 0 AND GROUPING (JOB) = 0 AND GROUPING (HIREDATE) = 1)
THEN DEPTNO || ' ' || JOB || ' subtotal:'
WHEN ( GROUPING (E1.DEPTNO) = 0 AND GROUPING (JOB) = 1 AND GROUPING (HIREDATE) = 1)
THEN DEPTNO || ' subtotal:'
WHEN ( GROUPING (E1.DEPTNO) = 1 AND GROUPING (JOB) = 1 AND GROUPING (HIREDATE) = 1)
THEN 'Total:'
END
"Total",
SUM (SAL), COUNT (SAL)
FROM emp e1
GROUP BY ROLLUP (E1.DEPTNO, E1.JOB, E1.HIREDATE);
-- 结果如下:
/*
Total SUM(SAL) COUNT(SAL)
------------------------------------ ---------- ----------
10 CLERK 1982-01-23 subtotal: 1300 1 (A,B,C) 分组
10 CLERK subtotal: 1300 1 (A,B) 分组
10 MANAGER 1981-06-09 subtotal: 2450 1
10 MANAGER subtotal: 2450 1
10 PRESIDENT 1981-11-17 subtotal: 5000 1
10 PRESIDENT subtotal: 5000 1
10 subtotal: 8750 3 (A) 分组 10号部门,共3个成员,工资总计:8750
20 CLERK 1980-12-17 subtotal: 800 1
20 CLERK subtotal: 800 1
20 ANALYST 1981-12-03 subtotal: 3000 1
20 ANALYST subtotal: 3000 1
20 MANAGER 1981-04-02 subtotal: 2975 1
20 MANAGER subtotal: 2975 1
20 subtotal: 6775 3
30 CLERK 1981-12-03 subtotal: 950 1
30 CLERK subtotal: 950 1
30 MANAGER 1981-05-01 subtotal: 2850 1
30 MANAGER subtotal: 2850 1
30 SALESMAN 1981-02-20 subtotal: 1600 1
30 SALESMAN 1981-02-22 subtotal: 1250 1
30 SALESMAN 1981-09-08 subtotal: 1500 1
30 SALESMAN 1981-09-28 subtotal: 1250 1
30 SALESMAN subtotal: 5600 4
30 subtotal: 9400 6
Total: 24925 12 () 全部总计:12 个成员,工资总计为:24925
已选择25行。
*/
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1163Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1066RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1137分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1341BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1542--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1069表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1574About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8455转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2836insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30431. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2829LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6368ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1371I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5592用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1338Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1349Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2598RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3010空间RESUMABLE操作 转 Oracle从9i开始 ... -
oracle 创建视图 with check option
2012-12-13 23:14 1464我们来看下面的例子: create or replace vi ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1463闪回事务查询有别于闪回查询的特点有以下3个: (1) ...
相关推荐
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/416356
rollup cube grouping sets的用法 详细,讲述与实例想结合
oracle 聚合函数的扩展使用 1.ROLLUP子句 ROLLUP是GROUP BY子句的扩展,它是为每一个分组返回一条合计记录,并为全部分组返回总计。...3.GROUPING()函数与ROLLUP、CUBE的结合使用 4.GROUPING_ID()函数的使用
关于with cube ,with rollup 和 grouping 通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之间的具体区别: ...仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相关联的选择列表中才允许分组。 当看到以上
GROUP BY子句(rollup,cube,grouping sets)实例说明
oracle rollup及cube的使用,开发人员必备的资料
Oracle的Rollup用法 Oracle的Rollup用法
rollup,cube,grouping sets()的个人理解 其中关于这三个的各种情况,举例论证这三个的区别。
深入介结分析函数的内部实现cube,rollup,grouping,里面有具体的例子来说明,方便大家理解学习
本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...
NULL 博文链接:https://wangjingyi.iteye.com/blog/1545090
SQL语句中Group BY 和Rollup以及cube用法
查看SQL Server的帮助才发现,厉害啊,原来还有这么厉害的东西,不由的想起以前做水晶报表的时候,原来在SQL Server中就可以实现这样的功能.
SQL Server中的用法为group by colomn with [rollup|cube],首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进行分组,只展现分组统计的值,而 rollup 为分层次展现,cube 为展现列中所有层次...
使用ROLLUP函数生成报表的小计、合计 这个函数很不错 使用的范围其实蛮广的
SQL 关于with cube,with rollup 和 grouping