SQL-分組聚合 - 單欄位分組

zydow發表於2024-12-04

在 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

相關文章