MYSQL GROUP BY 子句用于从多条记录中收集数据并将结果按一列或多列分组。它通常用于 SELECT 语句。
您还可以在分组列上使用一些聚合函数,如 COUNT、SUM、MIN、MAX、AVG 等。
句法:
SELECT expression1, expression2, ... expression_n,
aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
参数
expression1, expression2, ... expression_n:指定未封装在聚合函数中且必须包含在 GROUP BY 子句中的表达式。
聚合函数:它指定了一个函数,例如 SUM、COUNT、MIN、MAX 或 AVG 等。 表:它指定了要从中检索记录的表。FROM 子句中必须至少列出一个表。
WHERE 条件:可选。它指定要选择的记录必须满足的条件。
(i) 带有 COUNT 函数的 MySQL GROUP BY 子句
考虑一个名为“officers”的表,具有以下记录。
现在,让我们计算列地址中城市的重复数量。
执行以下查询:
SELECT address, COUNT(*)
FROM officers
GROUP BY address;
输出:
(ii) 带有 SUM 函数的 MySQL GROUP BY 子句
让我们以一个“employees”表为例,其中包含以下数据。
现在,以下查询将使用 SUM 函数对示例进行 GROUP BY,并返回每个员工的 emp_name 和总工作时间。
执行以下查询:
SELECT emp_name, SUM(working_hours) AS "Total working hours"
FROM employees
GROUP BY emp_name;
输出:
(iii) 带有 MIN 函数的 MySQL GROUP BY 子句
以下示例指定表“employees”中员工的最短工作时间。
执行以下查询:
SELECT emp_name, MIN(working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;
输出:
(iv) 带有 MAX 函数的 MySQL GROUP BY 子句
以下示例指定表“employees”中员工的最长工作时间。
执行以下查询:
SELECT emp_name, MAX (working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;
输出:
(v) 带有 AVG 函数的 MySQL GROUP BY 子句
以下示例指定表“employees”中员工的平均工作时间。
执行以下查询:
SELECT emp_name, AVG(working_hours) AS "Average working hour"
FROM employees
GROUP BY emp_name;
输出: