MySQL 常见子句:分组 GROUP BY
MYSQL 的 GROUP BY 子句通常在查询语句中根据单个或多个列对结果集进行分组。
你也可以使用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 子句中。
aggregate_function: 表示 SUM、COUNT、 MIN、 MAX、 AVG 等聚合函数。
tables: 数据表名称。FROM 子句中至少包含一个可供查询数据的数据表。
WHERE conditions: 可选项,查询数据的过滤条件。
(1) MySQL GROUP BY : COUNT
数据表 "officers" 数据如下:
根据 address 列计算城市的数量
执行查询语句:
SELECT address, COUNT(*)
FROM officers
GROUP BY address;
输出:
(2) MySQL GROUP BY : SUM
数据表 "employees" 数据如下:
使用GROUP BY 和 SUM 函数来演示获取每个员工的工作时长。
执行查询语句:
SELECT emp_name, SUM(working_hours) AS "Total working hours"
FROM employees
GROUP BY emp_name;
输出:
(3) MySQL GROUP BY : MIN
查询员工的最短工作时长。
执行查询语句:
SELECT emp_name, MIN(working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;
输出:
(4) MySQL GROUP BY : MAX
查询员工的最长工作时长。
执行查询语句:
SELECT emp_name, MAX (working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;
输出:
(5) MySQL GROUP BY : AVG
查询员工的平均工作时长。
执行查询语句:
SELECT emp_name, AVG(working_hours) AS "Average working hour"
FROM employees
GROUP BY emp_name;
输出: