MySQL 常见子句:分组 GROUP BY 0 个改进

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" 数据如下:

MySQL group by clause 1

根据 address 列计算城市的数量

执行查询语句:

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

输出:

MySQL group by clause 2

(2) MySQL GROUP BY : SUM

数据表 "employees" 数据如下:

MySQL group by clause 3

使用GROUP BY 和 SUM 函数来演示获取每个员工的工作时长。

执行查询语句:

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

输出:

MySQL group by clause 4

(3) MySQL GROUP BY : MIN

查询员工的最短工作时长。

执行查询语句:

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

输出:

MySQL group by clause 5

(4) MySQL GROUP BY : MAX

查询员工的最长工作时长。

执行查询语句:

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

输出:

MySQL group by clause 6

(5) MySQL GROUP BY : AVG

查询员工的平均工作时长。

执行查询语句:

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

输出:

MySQL group by clause 7

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!