在Oracle數據庫中進行分組查詢,主要使用GROUP BY
子句。以下是一個基本的步驟說明和示例:
GROUP BY
子句指定你想要對哪些列進行分組。分組的目的是將具有相同值的行組合在一起,以便對每個組執行聚合函數(如SUM()
、AVG()
、COUNT()
等)。SELECT
語句中,你可以使用聚合函數來計算每個組的特定值。這些函數將應用于分組列中的每個組。HAVING
子句來篩選分組后的結果。HAVING
子句在GROUP BY
子句之后使用,并且可以包含聚合函數。假設你有一個名為employees
的表,其中包含以下列:employee_id
、department_id
、salary
和hire_date
。你想要查詢每個部門的平均薪資和員工數量,可以使用以下SQL語句:
SELECT department_id,
AVG(salary) AS average_salary,
COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
在這個示例中:
department_id
列被用作分組列。AVG(salary)
計算每個部門的平均薪資。COUNT(*)
計算每個部門的員工數量。GROUP BY department_id
將結果按部門ID分組。如果你還想要篩選出平均薪資高于某個特定值的部門,可以使用HAVING
子句:
SELECT department_id,
AVG(salary) AS average_salary,
COUNT(*) AS employee_count
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000;
在這個修改后的示例中,只有那些平均薪資高于5000的部門才會被包括在結果集中。