MySQL 的 GROUP BY
子句允许您将列中的相同条目分组。 GROUP BY
将为每组返回一条记录。
用法
SELECT column_name(s)
FROM table_name
WHERE conditon
GROUP BY column_name
ORDER BY column_name;
例子
请考虑下表了解学生是否拥有驾驶执照:
student_id |
full_name |
年龄 |
has_license |
---|---|---|---|
1 |
天空镇 |
17 |
0 |
2 |
本·戴维斯 |
19 |
1 |
3 |
特拉维斯·苹果 |
18 |
0 |
4 |
亚瑟·大卫 |
16 |
0 |
5 |
本杰明镇 |
17 |
1 |
可以使用此处的代码创建上述示例表。
与聚合函数一起使用
我们可以将 GROUP BY
与 COUNT
、 MAX
、 MIN
、 SUM
、 AVG
等聚合方法一起使用,以有效返回有关表的信息。
返回每个 age
的学生人数:
SELECT age, COUNT(*)
FROM drivers_license
GROUP BY age;
+------+----------+
| age | COUNT(*) |
+------+----------+
| 17 | 2 |
| 19 | 1 |
| 18 | 1 |
| 16 | 1 |
+------+----------+
要检查有执照和无执照的学生的平均年龄:
SELECT has_license, AVG(age)
FROM drivers_license
GROUP BY has_license;
+-------------+----------+
| has_license | AVG(age) |
+-------------+----------+
| 0 | 17.0000 |
| 1 | 18.0000 |
+-------------+----------+
无驾照学生的平均年龄为17
,有驾照学生的平均年龄为18
。
要检查有或没有执照的学生的最小和最大年龄:
SELECT has_license, MIN(age), MAX(age)
FROM drivers_license
GROUP BY has_license;
+-------------+----------+----------+
| has_license | MIN(age) | MAX(age) |
+-------------+----------+----------+
| 0 | 16 | 18 |
| 1 | 17 | 19 |
+-------------+----------+----------+
相关用法
- MySQL GROUP_CONCAT()用法及代码示例
- MySQL GROUP_CONCAT方法用法及代码示例
- MySQL GREATEST()用法及代码示例
- MySQL GET_FORMAT()用法及代码示例
- MySQL GET_FORMAT方法用法及代码示例
- MySQL Group_CONCAT()用法及代码示例
- MySQL ROUND()用法及代码示例
- MySQL REPEAT()用法及代码示例
- MySQL POWER()用法及代码示例
- MySQL LEAD() and LAG()用法及代码示例
- MySQL IS_IPV4()用法及代码示例
- MySQL RADIANS方法用法及代码示例
- MySQL VARIANCE方法用法及代码示例
- MySQL WEEK()用法及代码示例
- MySQL TIME_FORMAT方法用法及代码示例
- MySQL CURTIME()用法及代码示例
- MySQL weekofyear()用法及代码示例
- MySQL Convert()用法及代码示例
- MySQL IS NOT用法及代码示例
- MySQL FROM_BASE64()用法及代码示例
- MySQL LEFT方法用法及代码示例
- MySQL UCASE方法用法及代码示例
- MySQL PI()用法及代码示例
- MySQL CONCAT()用法及代码示例
- MySQL UPPER方法用法及代码示例
注:本文由纯净天空筛选整理自Arthur Yanagisawa大神的英文原创作品 MySQL | GROUP BY。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。