題組內容
第二題:
有一關聯式資料庫包含下列資料表(table):
學生(學號、學生姓名、班級編號),共 50 筆資料
老師(老師編號、老師姓名、班級編號),共 8 筆資料
班級(班級編號、班級名稱),共 6 筆資料
期末考試(學號、科目、成績),共 20 筆資料
有底線的欄位表示為該資料表的主鍵(Primary key),請回答下列問題:
有一關聯式資料庫包含下列資料表(table):
學生(學號、學生姓名、班級編號),共 50 筆資料
老師(老師編號、老師姓名、班級編號),共 8 筆資料
班級(班級編號、班級名稱),共 6 筆資料
期末考試(學號、科目、成績),共 20 筆資料
有底線的欄位表示為該資料表的主鍵(Primary key),請回答下列問題:
(一)寫出 SQL 語法查詢出每個班級的老師姓名與學生人數。【10 分】
詳解 (共 1 筆)
詳解
SELECT
c.班級名稱,
t.老師姓名,
COUNT(s.學號) AS 學生人數
FROM
班級 c
JOIN
老師 t ON c.班級編號 = t.班級編號
LEFT JOIN
學生 s ON c.班級編號 = s.班級編號
GROUP BY
c.班級名稱, t.老師姓名;
解釋
選取列:
c.班級名稱,
t.老師姓名,
COUNT(s.學號) AS 學生人數
FROM
班級 c
JOIN
老師 t ON c.班級編號 = t.班級編號
LEFT JOIN
學生 s ON c.班級編號 = s.班級編號
GROUP BY
c.班級名稱, t.老師姓名;
解釋
選取列:
c.班級名稱:選取班級名稱。
t.老師姓名:選取老師姓名。
COUNT(s.學號) AS 學生人數:計算每個班級中的學生數量。
連接表格:
t.老師姓名:選取老師姓名。
COUNT(s.學號) AS 學生人數:計算每個班級中的學生數量。
連接表格:
JOIN 班級 c ON c.班級編號 = t.班級編號:將班級表 c 和老師表 t 進行連接,根據班級編號匹配班級和老師。
LEFT JOIN 學生 s ON c.班級編號 = s.班級編號:使用左連接將班級表 c 和學生表 s 連接,根據班級編號匹配學生和班級,即使某些班級沒有學生也會顯示出來。
分組:
LEFT JOIN 學生 s ON c.班級編號 = s.班級編號:使用左連接將班級表 c 和學生表 s 連接,根據班級編號匹配學生和班級,即使某些班級沒有學生也會顯示出來。
分組:
GROUP BY c.班級名稱, t.老師姓名:根據班級名稱和老師姓名進行分組,以計算每個班級的學生人數。
這樣的查詢語法會返回每個班級的老師姓名及該班級的學生人數。
這樣的查詢語法會返回每個班級的老師姓名及該班級的學生人數。