在 SQL 中,分組聚合是一種對資料進行分類並對每個分類進行聚合計算的操作。它允許我們按照指定的列或欄位對資料進行分組,然後對每個分組應用聚合函式,如 COUNT、SUM、AVG 等,以獲得分組後的彙總結果。
舉個例子:某個學校可以按照班級將學生分組,並對每個班級進行統計。檢視每個班級有多少學生、每個班級的平均成績。這樣我們就能夠對學校各班的學生情況有一個整體的瞭解,而不是單純看個別學生的資訊。
在 SQL 中,通常使用 GROUP BY
關鍵字對資料進行分組。
示例
假設有一個訂單表 orders
,包含以下欄位:order_id
(訂單號)、customer_id
(客戶編號)、amount
(訂單金額)。資料如下:
order_id | customer_id | amount |
---|---|---|
1 | A001 | 100 |
2 | A002 | 200 |
3 | A001 | 150 |
4 | A003 | 50 |
1)使用分組聚合查詢中每個客戶的編號:
SELECT customer_id FROM orders GROUP BY customer_id
查詢結果:
customer_id |
---|
A001 |
A002 |
A003 |
2)使用分組聚合查詢每個客戶的下單數:
SELECT customer_id, COUNT(order_id) AS order_num FROM orders GROUP BY customer_id
查詢結果:
customer_id | order_num |
---|---|
A001 | 2 |
A002 | 1 |
A003 | 1 |
題目
假設有一個學生表 student
,包含以下欄位:id
(學號)、name
(姓名)、class_id
(班級編號)、score
(成績)。請你編寫一個 SQL 查詢,統計學生表中的班級編號(class_id)和每個班級的平均成績(avg_score)。
id | name | age | class_id | score | exam_num |
---|---|---|---|---|---|
1 | 雞哥 | 25 | 1 | 2.5 | 1 |
2 | 魚皮 | 18 | 1 | 400 | 4 |
3 | 熱dog | 40 | 2 | 600 | 4 |
4 | 摸FISH | 2 | 360 | 4 | |
5 | 李阿巴 | 19 | 3 | 120 | 2 |
6 | 老李 | 56 | 3 | 500 | 4 |
7 | 李變數 | 24 | 4 | 390 | 3 |
8 | 王加瓦 | 23 | 4 | 0 | 4 |
9 | 趙派森 | 80 | 4 | 600 | 4 |
10 | 孫加加 | 60 | 5 | 100.5 | 1 |
點選檢視答案
select class_id, avg(score) as avg_score from student group by class_id