在Oracle中where和having的區別

    首先,where是針對單個語句的,having是針對組的。並且優先級是where>group by>having.

    需要注意的是:

1.where 是不可以放在group by 之後的

2.having 和group by 連用,並且 放在group by 之後

3.where 之後不可聚合函數,即SUM( ) ,AVG( ) 等等。having可以。


聚合函數:

    聚合函數就是統計函數。比如求和、求平均值、最大最小之類的。而group by 可以對這些統計函數對一組數據起作用。比如,我需要求各個階段內的平均值,則需要最各個階段進行分類,然後求平均。當然,where 也是可以達到要求的。


    在查詢中,聚合語句(聚合函數)優先級要高於having(即先分類在統計),聚合語句的優先級低於where()即先單個篩選再進行統計。比如,我們要對部門中小於20的部門並且工資之和要大於10000的部門進行篩選。則:

select department_id, sum(salary) from group
where department_id < 20 group by department_id
having sum(salary) >10000;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章