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