1、where 不能放在group by 的后面
2、HAVING 是跟GROUP BY 連在一起用的,放在GROUP BY 后面,此時的作用相當於WHERE
3.WHERE 后面的條件中不能有聚集函數,比如SUM(),AVG()等,而HAVING 可以
where 條件
group by 某個或某幾個字段
group by 某個或某幾個字段
二、where子句
where自居僅僅用於從from子句中返回的值,from子句返回的每一行數據都會用where子句中的條件進行判斷篩選。where子句中允許使用比較運算符(>,<,>=,<=,<>,!=|等)和邏輯運算符(and,or,not)。由於大家對where子句都比較熟悉,在此不在贅述。
三、having子句
having子句通常是與order by 子句一起使用的。因為having的作用是對使用group by進行分組統計后的結果進行進一步的篩選。舉個例子:現在需要找到部門工資總和大於10000的部門編號?
第一步:
select deptno,sum(sal) from emp group by deptno;
篩選結果如下:
DEPTNO SUM(SAL)
------ ----------
30 9400
20 10875
10 8750
可以看出我們想要的結果了。不過現在我們如果想要部門工資總和大於10000的呢?那么想到了對分組統計結果進行篩選的having來幫我們完成。
第二步:
select deptno,sum(sal) from emp group by deptno having sum(sal)>10000;
篩選結果如下:
DEPTNO SUM(SAL)
------ ----------
20 10875
四、where與having的區別
在查詢過程中聚合語句(sum,min,max,avg,count)要比having子句優先執行