oracle中having與where的區別


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子句優先執行

 

where子句在查詢過程中執行優先級別優先於聚合語句(sum,min,max,avg,count)

 


免責聲明!

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



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