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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。