單一二維表 T(F1-F7) 儲存學生、課程、成績、教師資訊,嚴重違反正規化原則 (重複群組、部分相依、轉移相依)。題目要求在不結構變更前提下完成多維查詢。
| 學生ID | 姓名 | 課程ID | 課程 | 成績 | 教師ID | 教師 |
|---|---|---|---|---|---|---|
| S3 | 王五 | K4 | 政治 | 53 | T4 | 趙老師 |
| S1 | 張三 | K1 | 數學 | 61 | T1 | 張老師 |
| S2 | 李四 | K3 | 英文 | 88 | T3 | 李老師 |
| S1 | 張三 | K4 | 政治 | 77 | T4 | 趙老師 |
| S2 | 李四 | K4 | 政治 | 67 | T5 | 周老師 |
| S3 | 王五 | K2 | 國文 | 90 | T2 | 王老師 |
| S3 | 王五 | K1 | 數學 | 55 | T1 | 張老師 |
| S1 | 張三 | K2 | 國文 | 81 | T2 | 王老師 |
| S4 | 趙六 | K2 | 國文 | 59 | T1 | 王老師 |
| S1 | 張三 | K3 | 英文 | 37 | T3 | 李老師 |
| S2 | 李四 | K1 | 數學 | 81 | T1 | 張老師 |
-- 學生平均成績
SELECT 學生ID, 學生姓名, AVG(成績) AS 平均成績
FROM T
GROUP BY 學生ID, 學生姓名
-- 課程對應教師 (取第一筆或全部)
SELECT DISTINCT 課程ID, 課程名稱, 教師ID, 教師姓名
FROM T
-- 正確關聯教師
SELECT T1.教師ID, T1.教師姓名, COUNT(*) AS 授課門數
FROM T T1
GROUP BY T1.教師ID, T1.教師姓名
SELECT DISTINCT 學生ID, 學生姓名
FROM T
WHERE 課程名稱='數學' AND 成績>80
-- 平均成績超過 70 分的學生
SELECT 學生ID, 學生姓名, AVG(成績) AS 平均
FROM T
GROUP BY 學生ID, 學生姓名
HAVING AVG(成績) > 70