在 MySQL 中,GROUP BY 关键字可以根据一个或多个字段对查询结果进行分组。
使用 GROUP BY 关键字的语法格式如下:
GROUP BY <字段名>
其中,“字段名”表示需要分组的字段名称,多个字段时用逗号隔开
GROUP BY单独使用
单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。
例 1
下面根据 tb_students_info 表中的 sex 字段进行分组查询,SQL 语句和运行结果如下:
mysql> SELECT name,sex FROM tb_students_info
-> GROUP BY sex;
+-------+------+
| name | sex |
+-------+------+
| Henry | 女 |
| Dany | 男 |
+-------+------+
结果中只显示了两条记录,这两条记录的 sex 字段的值分别为“女”和“男”。
例 2
下面根据 tb_students_info 表中的 age 和 sex 字段进行分组查询。SQL 语句和运行结果如下:
mysql> SELECT age,sex,GROUP_CONCAT(name) FROM tb_students_info
-> GROUP BY age,sex;
+------+------+--------------------+
| age | sex | GROUP_CONCAT(name) |
+------+------+--------------------+
| 21 | 女 | John |
| 22 | 女 | Thomas |
| 22 | 男 | Jane,Lily |
| 23 | 女 | Henry,Tom |
| 23 | 男 | Green,Susan |
| 24 | 女 | Jim |
| 25 | 男 | Dany |
+------+------+--------------------+
GROUP BY 与聚合函数
在数据统计时,GROUP BY 关键字经常和聚合函数一起使用。
聚合函数包括 COUNT(),SUM(),AVG(),MAX() 和 MIN()。其中,COUNT() 用来统计记录的条数;SUM() 用来计算字段值的总和;AVG() 用来计算字段值的平均值;MAX() 用来查询字段的最大值;MIN() 用来查询字段的最小值。
例 3
下面根据 tb_students_info 表的 sex 字段进行分组查询,使用 COUNT() 函数计算每一组的记录数。SQL 语句和运行结果如下:
mysql> SELECT sex,COUNT(sex) FROM tb_students_info
-> GROUP BY sex;
+------+------------+
| sex | COUNT(sex) |
+------+------------+
| 女 | 5 |
| 男 | 5 |
+------+------------+
结果显示,sex 字段值为“女”的记录是一组,有 5 条记录;sex 字段值为“男”的记录是一组,有 5 条记录。
MySQL 作业记录
-- 查询Goods表,统计所有商品的总销售量
SELECT SUM(gdSaleQty)
FROM goods;
-- 查询Goods表,显示商品的最低价格
SELECT min(gdPrice)
FROM goods;
-- 查询Orders表,显示购买过钢笔的用户人数。
SELECT COUNT(DISTINCT uID),gdName='钢笔'
FROM orders;
-- 查询goods表,统计每个城市商品的销售总量。
SELECT SUM(uIDNum),gdCity
FROM goods;
-- 查询goods表,查询出销售量前三的城市。
SELECT uCity
FROM goods
GROUP BY uCity
ORDER BY uCity DESC
HAVING saleNum>=3;
版权归原作者 浪里个浪的1024 所有, 如有侵权,请联系我们删除。