SQL中如何使用GROUP BY语句

GROUP BY 语句在 SQL 中用于:将行数据根据列进行分组。当你想要对数据进行分组并对每个分组进行聚合计算(如计数、求和、平均等)时,GROUP BY 非常有用。

以下是基本步骤和示例:

基本语法

SELECT column_name(s), AGGREGATE_FUNCTION(column_name)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

示例

假设我们有一个名为 employees 的表,其结构如下:

  • id (员工ID)
  • name (员工姓名)
  • department (部门)
  • salary (薪水)
1. 按部门分组并计算每个部门的员工数量
SELECT department, COUNT(*) AS number_of_employees
FROM employees
GROUP BY department;

这个查询会返回每个部门的员工数量。

2. 按部门和职位分组,并计算每个分组的平均薪水
SELECT department, position, AVG(salary) AS average_salary
FROM employees
GROUP BY department, position;

这个查询会返回每个部门和职位的平均薪水。

3. 使用 HAVING 子句过滤分组结果

如果你想对分组后的结果进行进一步的过滤,可以使用 HAVING 子句。HAVING 子句类似于 WHERE,但它应用于分组后的结果。

例如,只显示平均薪水大于 50000 的部门:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
注意事项:
  • GROUP BY 子句可以包含一个或多个列,这些列将用于数据分组。
  • 在使用 GROUP BY 时,选择的列必须是聚合函数的一部分或在 GROUP BY 子句中声明的。
  • ORDER BY 子句(如果使用)通常放在 GROUP BY 子句之后,用于对结果进行排序。
  • HAVING 子句用于对分组后的结果进行过滤,而 WHERE 子句用于在分组之前过滤行。

你可能感兴趣的:(sql,数据库)