having函數用在group by子句的后面,對分組結果集進行條件篩選。
1、having子句包含聚合函數
/*列出平均工資在1000之上,並且最低工資不低於800的工作信息*/
select job,avg(sal),min(sal) from emp
group by job
having avg(sal)>1000 and min(sal)>=800--avg(),min()為聚合函數
2、where子句用在分組之前篩選數據;having子句分組之后使用,對分組結果集進一步篩選
/*列出不是銷售員最低薪資大於1500的各種工作的信息*/
select job,min(sal) from emp
where job<>'SALESMAN'
group by job
having min(sal)>1500
3、having子句可以使用別名
/*顯示非銷售人員工作名稱以及從事同一工作雇員的月工資的總和,並且要滿足從事同一工作的雇員的月工資合計大於$5000,輸出結果按月工資的合計升序排列*/
SELECT job,SUM(sal) S_U_M FROM emp WHERE job<>'SALESMAN' GROUP BY job
HAVING S_U_M>5000--S_U_M為SUM(sal)的別名 ORDER BY S_U_M