Oracle子句【group by、having】

【分組查詢】
關鍵字:group by 分組字段名,分組字段名...
 --注意1:分組後,在select語句中只容許出現分組字段和多行函數
 --注意2:若是是多字段分組,先按第一字段分組,而後每一個小組繼續按照第二個字段分組,以此類推。
 --注意3:在where子句中不容許出現多行函數(where子句比多行函數級別高)
【分組篩選】
關鍵字:having
 --做用:針對分組後數據進行篩選,容許使用多行函數。
 --注意1 :having必須和分組關鍵字結合使用,不容許單獨使用。
注意:where 和 having 比較:
 --1.where子句不容許出現多行函數,having容許出現多行函數。
 --2.where子句和having均可以使用普通字段直接進行篩選,可是where的效率高於having。
where執行順序: from-->where-->group by-->select-->order by
having執行順序:from-->group by-->select-->having-->order by
小結:在分組語句中:使用where進行字段級別的篩選,使用having進行多行函數篩選。
函數

舉栗子:
spa

 1 --查詢不一樣部門的最高工資
 2 select deptno,max(sal) from emp group by deptno;
 3 --查詢不一樣工做崗位的員工數
 4 select job,count(*) from emp group by job;
 5 --查詢不一樣部門的不一樣工做崗位的人數
 6 select deptno,job,count(*) from emp group by deptno,job order by deptno;
 7 --查詢不一樣部門的不一樣工做崗位的而且人數大於1的信息
 8 select deptno,job,count(*) from emp group by deptno,job having count(*)>1 order by deptno;
 9 --查詢部門號大於10的不一樣部門的不一樣工做崗位的人數
10 select deptno,job,count(*) from emp group by deptno,job having deptno>10 order by deptno;
11 select deptno,job,count(*) from emp where deptno>10 group by deptno,job order by deptno;--執行效率高
相關文章
相關標籤/搜索