GROUP BY
是 SQL 中用于将结果集按一个或多个列进行分组,以便可以对每个分组执行聚合函数(如 COUNT()
, SUM()
, AVG()
, MAX()
, MIN()
等)的语句。在 GROUP BY
子句后面列出的列将作为分组的基础。
语法:
SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE condition
GROUP BY column1, column2
ORDER BY column1, column2;
详细说明:
-
SELECT 语句:在这里,你可以指定你想从数据库表中检索的列。你还可以在
SELECT
语句中使用聚合函数,对这些列执行计算。 -
FROM 子句:它指定了要从中检索数据的表或视图。
-
WHERE 子句(可选):你可以使用
WHERE
子句来过滤结果集,只包括满足指定条件的记录。 -
GROUP BY 子句:这是将结果集进行分组的关键部分。你需要在
GROUP BY
后面列出你想按其进行分组的列。 -
ORDER BY 子句(可选):你可以使用
ORDER BY
子句对结果集进行排序。你可以指定多个列进行排序,每个列之间用逗号分隔。
举例:
假设我们有一个名为 employees
的表,其中包含员工的以下信息:
-
id
: 员工的唯一标识符 -
name
: 员工的名字 -
department
: 员工所在的部门 -
salary
: 员工的薪水
现在,如果我们想找出每个部门的员工数量和总薪水,我们可以使用 GROUP BY
查询,如下所示:
SELECT department, COUNT(*) AS number_of_employees, SUM(salary) AS total_salary
FROM employees
GROUP BY department;
在这个查询中:
-
我们选择了
department
列,并使用COUNT(*)
和SUM(salary)
聚合函数来计算每个部门的员工数量和总薪水。 -
使用
GROUP BY department
将结果集按department
列进行分组。这意味着,对于表中的每个不同的部门值,我们将得到一行结果,其中包含该部门的员工数量和总薪水。
这样,将得到一个按部门分组的员工数量和总薪水的列表。