MySQL Group By语句

MYSQL GROUP BY 子句用于从多条记录中收集数据,并将结果按一列或多列分组。它通常用于 SELECT 语句中。

您还可以在分组列上使用一些聚合函数,如 COUNT、SUM、MIN、MAX、AVG 等。

一、MySQL Group By语句的语法

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:可选。它指定要选择的记录必须满足的条件。

二、带有 COUNT 函数的 MySQL GROUP BY 子句

现有一个名为“officers”的表,具有以下记录。

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

执行以下SQL语句:

SELECT address, COUNT(*)  
FROM   officers   
GROUP BY address;   

输出结果为:

三、带有 SUM 函数的 MySQL GROUP BY 子句

让我们看一个表“employees”表,其中包含以下数据。

现在,以下查询将使用 SUM 函数对示例进行 GROUP BY,并返回每个员工的 emp_name 和总工作时间。

执行以下SQL语句:

SELECT emp_name, SUM(working_hours) AS "Total working hours"  
FROM employees  
GROUP BY emp_name;  

输出结果为:

四、带有 MIN 函数的 MySQL GROUP BY 子句

以下示例从“employees”表中指定员工​​的最短工作时间。

执行以下SQL语句:

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

输出结果为:

五、带有MAX 功能的 MySQL GROUP BY 子句

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

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

输出结果为:

六、带有 AVG 功能的 MySQL GROUP BY 子句

下面的示例从“employees”表中指定员工​​的平均工作时间。

执行以下SQL语句:

SELECT emp_name, AVG(working_hours) AS "Average working hour"  
FROM employees  
GROUP BY emp_name; 

输出结果为:

热门文章

优秀文章