ORACLE命令 CUBE
来源:互联网 发布:白金数据1080p百度云 编辑:程序博客网 时间:2024/06/04 23:28
基本命令:GROUP BY CUBE(字段列表);
CUBE命令根据字段列表,生成不同的排列组合,并根据每一种组合结果,生成统计汇总。
比如:GROUP BY CUBE( city, job, age );排列组合的结果如示:
1)city,job,age
2)city, job
3)city
4)job, age
5)age
6)city , age
7) job
所以就有7种排列组合。
2)根据每一种排列组合,生成不同的统计汇总,如下:
1) group by cube(city, job ,age );
2) group by cube(city, job);
3) group by cube(city);
4)group by cube(job, age );
5)group by cube(age);
6)group by cube(city, age);
7)group by cube(job);
举例说明:
1)先统观我们要用到的表(TABLE ):
SQL> SELECT * FROM EMP ; EMPNO ENAME JOB MGR HIREDATE SAL DEPTNO---------- ---------- --------- ----- ----------- --------- ------ 7369 SMITH CLERK 7902 1980/12/17 800.00 20 7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 30 7521 WARD SALESMAN 7698 1981/2/22 1250.00 30 7566 JONES MANAGER 7839 1981/4/2 2975.00 20 7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 30 7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30 7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20 7839 KING PRESIDENT 1981/11/17 5000.00 10 7844 TURNER SALESMAN 7698 1981/9/8 1500.00 30 7876 ADAMS CLERK 7788 1987/5/23 1100.00 20 7900 JAMES CLERK 7698 1981/12/3 950.00 30 7902 FORD ANALYST 7566 1981/12/3 3000.00 20 7934 MILLER CLERK 7782 1982/1/23 1300.00 102) 根据职业(JOB)求不同职业的平均薪水(SAL):
SQL> SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB ORDER BY JOB ASC ; JOB AVG(SAL)--------- ----------ANALYST 3000CLERK 1037.5MANAGER 2758.33333PRESIDENT 5000SALESMAN 1400
3)根据不同部门(DEPTNO),不同职业(JOB),求平均薪水(SAL):
SQL> SELECT JOB, DEPTNO , AVG(SAL) FROM EMP GROUP BY JOB , DEPTNO ORDER BY JOB; JOB DEPTNO AVG(SAL)--------- ------ ----------ANALYST 20 3000CLERK 10 1300CLERK 20 950CLERK 30 950MANAGER 10 2450MANAGER 20 2975MANAGER 30 2850PRESIDENT 10 5000SALESMAN 30 1400-- 可以看到不同部门(DEPTNO:10,20,30)的平均年薪水AVG(SAL)是不一样的。
4)统计汇总:
SQL> SELECT JOB, DEPTNO, AVG(SAL) FROM EMP GROUP BY CUBE(JOB, DEPTNO) ORDER BY JOB DESC ; JOB DEPTNO AVG(SAL)--------- ------ ---------- 10 2916.66666 20 2175 30 1566.66666 2073.21428SALESMAN 30 1400SALESMAN 1400PRESIDENT 10 5000PRESIDENT 5000MANAGER 10 2450MANAGER 20 2975MANAGER 30 2850MANAGER 2758.33333CLERK 10 1300CLERK 20 950CLERK 30 950CLERK 1037.5ANALYST 20 3000ANALYST 3000
---18 rows selected 。。///共有18行结果
我们来看看:group by cube(JOB,DEPTNO) order by JOB desc ; 根据JOB ,DEPTNO进性统计汇总,排列组合如下:1)JOB,DEPTNO
2) JOB
3)DEPTNO
4)去掉JOB和DEPTNO
统计汇总如下:
1)根据JOB,DEPTNO 统计汇总,结果如下:
SALESMAN 30 1400PRESIDENT 10 5000MANAGER 10 2450MANAGER 20 2975MANAGER 30 2850CLERK 10 1300CLERK 20 950CLERK 30 950ANALYST 20 3000--9 rows selected。。//9行结果。
2)根据JOB统计汇总,结果如下:
SALESMAN 1400PRESIDENT 5000MANAGER 2758.33333CLERK 1037.5ANALYST 3000
。。//共5行被选取。
3)根据DEPTNO统计汇总结果如下:
10 2916.66666 20 2175 30 1566.66666。。//共3行被选取。
4)剩下最后一行:
2073.21428
。。//剩下最后1行,
为了验证这个结果是否准确,测试下:
SQL> SELECT AVG(SAL) FROM EMP; AVG(SAL)----------2073.21428--//累计9+5+3+1=18与 SELECT JOB, DEPTNO, AVG(SAL) FROM EMP GROUP BY CUBE(JOB, DEPTNO) ORDER BY JOB DESC ;查询结果相同
GROUP BY CUBE( );通过举例说明,应该还是很容易理解的。
- ORACLE命令 CUBE
- oracle分组 rollup,Cube
- oracle rollup cube 用法
- oracle rollup,cube函数
- Oracle cube rollup 区别
- oracle :cube rollup
- oracle 高级分组 CUBE
- oracle rollup和cube
- Oracle 之 CUBE
- Oracle RULLUP和CUBE
- Oracle ROLLUP 和 CUBE
- Oracle中的rollup,cube
- 【CUBE】Oracle分组函数之CUBE魅力
- 【CUBE】Oracle分组函数之CUBE魅力
- 【CUBE】Oracle分组函数之CUBE魅力
- transformer 自动刷新CUBE命令
- Oracle ROLLUP和CUBE 用法
- Oracle rollup和cube区别
- 使用IJG库读写JPEG格式文件
- 构建TI新一代高性能SOC的最小系统
- AVR单片机网址推荐 .
- 一些心得挺深刻的书
- C64X EDMA优先级及优先级队列
- ORACLE命令 CUBE
- @Override
- MYSQL的REPLACE和INSERT ... ON DUPLICATE KEY UPDATE
- 【线段树】【NOI2007】项链工厂
- javah -jni 生成 JNI 头文件时,要注意
- 常见的java异常整理
- android 剪切图片并把背景色设为透明
- 《Windows程序设计》之菜单中使用位图
- android 点击listView没有反应