MySQL 分组统计 GROUP BY 与 COUNT
时间:2021-12-04 作者:匿名
您可以使用GROUP BY对列中的值进行分组,并且如果您愿意,可以对该列执行计算。您可以在分组列上使用 COUNT、SUM、AVG 等函数。
要理解GROUP BY子句,请考虑一个employee_tbl表,该表具有以下记录:
mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+--------------------+ | 1 | John | 2007-01-24 | 250 | | 2 | Ram | 2007-05-27 | 220 | | 3 | Jack | 2007-05-06 | 170 | | 3 | Jack | 2007-04-06 | 100 | | 4 | Jill | 2007-04-06 | 220 | | 5 | Zara | 2007-06-06 | 300 | | 5 | Zara | 2007-02-06 | 350 | +------+------+------------+--------------------+ 7 rows in set (0.00 sec)
现在,假设根据上表,我们要计算每个员工工作的天数。
如果我们按如下方式编写 SQL 查询,那么我们将得到以下结果 :
mysql> SELECT COUNT(*) FROM employee_tbl; +---------------------------+ | COUNT(*) | +---------------------------+ | 7 | +---------------------------+
但这不符合我们的目的,我们想分别显示每个人输入的总页数。这是通过将聚合函数与GROUP BY子句结合使用来完成的,如下所示:
mysql> SELECT name, COUNT(*) -> FROM employee_tbl -> GROUP BY name; +------+----------+ | name | COUNT(*) | +------+----------+ | Jack | 2 | | Jill | 1 | | John | 1 | | Ram | 1 | | Zara | 2 | +------+----------+ 5 rows in set (0.04 sec)
我们将在 SUM、AVG 等其他函数中看到更多与 GROUP BY 相关的功能。