Oracle - 查詢語句 - 分組函數


/*
    分組函數
        不能再select子句中出現普通的列,除非這個列在group by中給出
        所有的空值都會被分為一組
    分組過濾
        
    SELECT FROM WHERE GROUPBY HAVING ORDERBY
        
*/
--求出每種工作的平均薪資
SELECT JOB,AVG(SAL),MAX(SAL),MIN(SAL) FROM EMP GROUP BY JOB;
    
SELECT MAX(SAL) FROM EMP;
SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO;
--查詢每個部門中,不同工作的平均薪資
SELECT DEPTNO,JOB,AVG(SAL) FROM EMP GROUP BY DEPTNO ,JOB ORDER BY DEPTNO,JOB;
    
--分組函數語句中,select子句中出現的每一個列必須出現在出現在group by后面,
--除非是一個組函數,而且需要遵循組函數的使用規則
SELECT DEPTNO,AVG(SAL),MIN(ENAME) FROM EMP GROUP BY DEPTNO;
--按照津貼進行分組
SELECT COMM,COUNT(*) FROM EMP GROUP BY COMM;
--查詢 每個部門中 薪資大於2000員工的平均薪資
SELECT DEPTNO,AVG(SAL) FROM EMP WHERE SAL>2000 GROUP BY DEPTNO;
--查詢部門的平均薪資,如果平均薪資低於2000就過濾掉
SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>2000;
--查詢薪資大於等於2500的員工,按照工作進行分組,然后求出平均薪資大於等於3000的工作
SELECT * FROM EMP;--14
SELECT * FROM EMP WHERE SAL>=2500;--5
SELECT JOB,AVG(SAL) FROM EMP WHERE SAL>=2500 GROUP BY JOB;--3
SELECT JOB,AVG(SAL) FROM EMP WHERE SAL>=2500 GROUP BY JOB HAVING AVG(SAL)>=3000;--2
SELECT JOB,AVG(SAL) FROM EMP WHERE SAL>=2500 GROUP BY JOB HAVING AVG(SAL)>=3000 ORDER BY AVG(SAL) DESC;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM