MySQL GROUP BY子句
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;
参数
表达式1,表达式2,… 表达式_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) MySQL GROUP BY子句与SUM函数
让我们来看一个名为“employees”的表,其中包含以下数据。
现在,下面的查询将使用SUM函数对示例进行GROUP BY,并返回每个员工的员工姓名和总工作小时数。
执行以下查询:
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) MySQL GROUP BY语句与MAX函数
以下示例指定了表”employees”中员工的最大工作小时数。
执行以下查询:
SELECT emp_name, MAX (working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;
输出:
(v) MySQL GROUP BY子句与AVG函数
以下实例指定了“employees”表中各员工的平均工作小时数。
执行以下查询语句:
SELECT emp_name, AVG(working_hours) AS "平均工作小时数"
FROM employees
GROUP BY emp_name;
输出: