Welcome 微信登录

首页 / 数据库 / MySQL / Oracle命令 group by having

先通览我们要查询的表:
  1. SQL> SELECT * FROM EMP ;  
  2.    
  3.      EMPNO ENAME      JOB         MGR HIREDATE          SAL DEPTNO  
  4. ---------- ---------- --------- ----- ----------- --------- ------   
  5.       7369 SMITH      CLERK      7902 1980/12/17     800.00     20  
  6.       7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00     30  
  7.       7521 WARD       SALESMAN   7698 1981/2/22     1250.00     30  
  8.       7566 JONES      MANAGER    7839 1981/4/2      2975.00     20  
  9.       7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00     30  
  10.       7698 BLAKE      MANAGER    7839 1981/5/1      2850.00     30  
  11.       7782 CLARK      MANAGER    7839 1981/6/9      2450.00     10  
  12.       7788 SCOTT      ANALYST    7566 1987/4/19     3000.00     20  
  13.       7839 KING       PRESIDENT       1981/11/17    5000.00     10  
  14.       7844 TURNER     SALESMAN   7698 1981/9/8      1500.00     30  
  15.       7876 ADAMS      CLERK      7788 1987/5/23     1100.00     20  
  16.       7900 JAMES      CLERK      7698 1981/12/3      950.00     30  
  17.       7902 FORD       ANALYST    7566 1981/12/3     3000.00     20  
  18.       7934 MILLER     CLERK      7782 1982/1/23     1300.00     10  
  19.    
  20. 14 rows selected  
我们对JOB和DEPTNO进行统计汇总,并过滤掉SAL<2500的信息。
  1. SQL> SELECT JOB, DEPTNO, AVG(SAL)AS AVG_SAL FROM EMP GROUP BY JOB,DEPTNO  HAVING AVG(SAL) >=2500  ORDER BY JOB ASC;  
  2.    
  3. JOB       DEPTNO    AVG_SAL  
  4. --------- ------ ----------   
  5. ANALYST       20       3000  
  6. MANAGER       20       2975  
  7. MANAGER       30       2850  
  8. PRESIDENT     10       5000  
可以看出,HAVING 对于GROUP BY ,类似于WHERE 对于SELECT  。  HAVING用于过滤掉GROUP BY 中不满足条件的信息,仅仅显示满足条件的信息。比如上例中只显示SAL>=2500的信息。GROUP 的执行会消耗大量CPU资源,HAVING配合GROUP也算是一种优化吧。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle命令 CUBEOracle logmnr 日志挖掘一例相关资讯      Oracle命令 
  • Oracle模拟MySQL的show index from  (06/28/2014 13:41:35)
  • Oracle中tnsping命令解析  (10/04/2013 10:10:52)
  • Oracle中的文件的执行命令  (02/14/2013 16:31:42)
  • Oracle工具之nid命令的使用  (01/23/2014 15:22:08)
  • Oracle使用命令移动各类文件的方法  (05/25/2013 17:13:22)
  • Oracle中imp命令详解  (10/14/2012 19:28:34)
本文评论 查看全部评论 (0)
表情: 姓名: 字数