oracle–groupby分組學習
使用group by分組 在多行函數中不能直接使用普通欄位,除非group by 在多行函數中不能直接使用單行函數,除非group by group by學習: ---1、使用group by進行數據分組 select 多行函數,分組欄位 from 表名 group by 分組欄位 ---2、多欄位進行分組的時候,按照欄位順序進行分組,第一條件分組完成後,繼續使用其他條件依次分組。 ---3、group by依然可以和order by 聯合使用 ---4、可以和單行函數聯合進行分組,注意使用了單行函數那麼在查詢語句中必須也要使用 查詢最高工資和員工數 select max(sal),count(*) from emp 查詢不同部門的最高工資 select * from emp order by deptno select deptno,max(sal) from emp group by deptno--使用group進行分組查詢,分組的欄位可以出現在查詢中,其他欄位依然不可以 查詢不同工作崗位的員工數 select * from emp for update select lower(job),count(*) from emp group by lower(job)--使用單行函數進行分組 查詢不同部門的不同工作崗位的人數 select deptno,job ,count(*) from emp group by deptno,job--使用多欄位組合進行分組 select deptno,job ,count(*) from emp group by deptno,job order by deptno 查詢不同部門的不同工作崗位的並且人數大於1的資訊 select count(*) from emp where count(*)>3 group by deptno select deptno,job ,count(*) from emp where count(*)>1 group by deptno,job order by deptno 查詢部門號大於10的不同部門的不同工作崗位的人數 select deptno,job ,count(*) from emp where deptno>10 group by deptno,job order by deptno 使用having進行分組後篩選 having學習: --1、使用group by分組後在進行數據篩選的時候,where中不能出現多行函數,所以使用新的關鍵字having進行條件篩選 --2、where條件篩選的執行順序:from-->where--->group -->select --3、having條件篩選的執行順序:from-->group by -->having-->select --4、where的執行效率比having要高,能使用where的情況下盡量不要使用having 查詢不同部門的不同工作崗位的並且人數大於1的資訊 使用where語句進行篩選 where條件語句sql執行順序:from-->where--->group -->select select count(*) from emp where count(*)>1 group by deptno,job 使用having語句進行篩選 having條件語句的執行順序:from-->group by -->having-->select select deptno, count(*) from emp group by deptno having count(*)>5 select deptno,job ,count(*) from emp group by deptno,job having deptno>10 order by deptno