在Oracle數據庫中,分組函數(如COUNT、SUM、AVG、MAX和MIN等)常與GROUP BY子句一起使用,以便對數據進行分組并計算每個組的聚合值
HAVING子句用于過濾分組后的結果。它類似于WHERE子句,但是HAVING子句針對的是分組后的數據,而WHERE子句針對的是原始數據。HAVING子句中可以使用分組函數,以便對分組后的數據進行條件篩選。
以下是Oracle中分組函數與HAVING子句結合使用的基本語法:
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2
HAVING condition;
其中,column1
和column2
是要分組的列,aggregate_function(column3)
是應用于分組數據的聚合函數,condition
是HAVING子句中的過濾條件。
例如,假設我們有一個名為employees
的表,包含department_id
(部門ID)、salary
(工資)等列。現在,我們想要查詢每個部門的平均工資,并且只顯示平均工資大于5000的部門。這可以通過以下SQL語句實現:
SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000;
在這個例子中,我們首先使用GROUP BY子句按department_id
對員工進行分組。然后,我們使用AVG函數計算每個部門的平均工資。最后,我們使用HAVING子句過濾出平均工資大于5000的部門。