在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的部门才会被包括在结果集中。