📜  MySQL GROUP BY子句

📅  最后修改于: 2020-11-17 04:49:04             🧑  作者: Mango

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;

参量

expression1,expression2,… expression_n:它指定未封装在聚合函数且必须包含在GROUP BY子句中的表达式。

Aggregate_function:它指定一个函数,例如SUM,COUNT,MIN,MAX或AVG等。表:它指定要从中检索记录的表。在FROM子句中必须至少列出一个表。

条件:它是可选的。它指定了选择记录必须满足的条件。

(i)具有COUNT函数的MySQL GROUP BY子句

考虑一个具有以下记录的名为“军官”表的表。

现在,让我们在列地址中计算重复的城市数。

执行以下查询:

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子句

下面的示例从“雇员”表中指定雇员的最短工作时间。

执行以下查询:

SELECT emp_name, MIN(working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;

输出:

(iv)具有MAX函数的MySQL GROUP BY子句

下面的示例从“员工”表中指定员工的最长工作时间。

执行以下查询:

SELECT emp_name, MAX (working_hours) AS "Minimum working hour"
FROM employees
GROUP BY emp_name;

输出:

(v)具有AVG函数的MySQL GROUP BY子句