DSE ICT|關聯式資料庫與 SQL 配套練習(第二份・聚合與連接) 2026-11-04 導師備課指引 · 中學 ICT DSE ICT|關聯式資料庫與 SQL 配套練習(第二份・聚合與連接) 十題由聚合函數到 GROUP BY 與 HAVING 的分工,再用 12 列與 4 班的表算清 INNER JOIN 與 LEFT JOIN 的行數。 先做題,後對答案 建議三十五分分鐘;先寫出每個中間結果的列數,再判斷 WHERE 與 HAVING 該用哪個。 01 本卷資料(做完才看答案) 項目 內容 題數 10 題 建議時間 約 35 分鐘 難度分佈 基礎 4 · 進階 3 · 挑戰 2 · 錯題重練 1 對應章節 所屬章節:DSE ICT|關聯式資料庫與 SQL 適用年級 中五(S5)ICT 02 題目(10 題) 基礎12 位學生(總分 902),form = 4 有 5 人。`SELECT COUNT(*) FROM Students WHERE form = 4;` 與佔全表百分比是? 基礎同一組分數(最高 95、最低 54)。`SELECT MAX(score), MIN(score) FROM Students;` 的結果與極差? 基礎`SELECT class, AVG(score) FROM Students GROUP BY class;` 在 A 班(5 人)、B 班(4 人)、C 班(3 人)下,哪一班平均分最高、數值多少? 基礎分數排序後前三高是 95、91、88。若寫 `SELECT name, score FROM Students ORDER BY score DESC, name ASC LIMIT 1;`,第一列的分數是多少? 進階各級人數為 form 4 五人、form 5 四人、form 6 三人。`SELECT form FROM Students GROUP BY form HAVING COUNT(*) >= 4;` 回傳幾組? 進階Students 有 12 列,Classes 表有 A、B、C、D 四班。兩表以 class 做 `INNER JOIN`,回傳幾列? 進階同樣兩表改寫 `Classes LEFT JOIN Students`。D 班沒有學生,回傳幾列? 挑戰班別總分:A 班 358、B 班 307、C 班 237。`SELECT class, SUM(score) FROM Students GROUP BY class ORDER BY SUM(score) DESC;` 第一列是? 挑戰form 6 三位學生分數為 88、54、66。`AVG(score)` 對這組的結果,與全表平均 75.17 相差多少? 錯題重練錯題重練:有同學寫 `SELECT class, AVG(score) FROM Students WHERE COUNT(*) > 3 GROUP BY class;` 想篩掉小人數班別。錯在哪裡? 03 答案與一句解說 題號 答案 一句解說 1 COUNT(*) = 5,佔 41.7%(5 ÷ 12 = 41.666…) COUNT(*) 只數列,不計欄;百分比用同一張表的總列數做分母。 2 MAX = 95、MIN = 54,極差 41 分 聚合函數把整欄壓成一個值,極差 = 最大值 − 最小值。 3 C 班最高,平均 79.0(237 ÷ 3) GROUP BY 先把同班列聚成一組,再在組內計平均;A 班 71.6、B 班 76.75。 4 95 ORDER BY 先按 score 由大到小,LIMIT 1 只取第一列,第二排序鍵不會影響。 5 2 組(form 4、form 5) HAVING 在分組後才篩,篩的是組的 COUNT;form 6 只有 3 人被剔除。 6 12 列 每名學生的班別都能在 Classes 找到,所以一對一保留全部 12 列;D 班無學生不出現。 7 13 列(12 個有學生的列 + D 班一列,學生欄為 NULL) LEFT JOIN 保留左表全部列,右表對不上就補 NULL。 8 A 班,358 分 SUM 在組內加總,再按總分由大到小排序;A 班多一人(5 對 4),總分因此高 51,但平均分反而較低。 9 69.3;比全表平均低 5.83 分(75.166… − 69.333…) 先組內平均(208 ÷ 3),再與全表平均相減;差值 5.83 若四捨五入不同會出錯,要用未取整數值。 10 WHERE 在分組前執行,不能用聚合函數;應改寫成 `GROUP BY class HAVING COUNT(*) > 3` 執行次序是 WHERE → GROUP BY → HAVING,所以組的條件一定放在 HAVING。 04 做完之後怎樣跟進 對完答案,只重做錯的那幾題,並在錯題旁寫出錯在哪一步(公式、單位還是抄錯數)。 同一題隔兩日再做一次;兩次都對才可以移到下一份練習。 家長只需看答案欄與解說欄,不必逐題講解。 想找導師跟進這一章?按此登記導師登記 → 本卷題目與答案由 TutorZone 團隊原創編寫,並非任何學校、出版社或考試局的試題;數值與答案均以程式核算。
DSE ICT|關聯式資料庫與 SQL 配套練習(第二份・聚合與連接) 2026-11-04 導師備課指引 · 中學 ICT DSE ICT|關聯式資料庫與 SQL 配套練習(第二份・聚合與連接) 十題由聚合函數到 GROUP BY 與 HAVING 的分工,再用 12 列與 4 班的表算清 INNER JOIN 與 LEFT JOIN 的行數。 先做題,後對答案 建議三十五分分鐘;先寫出每個中間結果的列數,再判斷 WHERE 與 HAVING 該用哪個。 01 本卷資料(做完才看答案) 項目 內容 題數 10 題 建議時間 約 35 分鐘 難度分佈 基礎 4 · 進階 3 · 挑戰 2 · 錯題重練 1 對應章節 所屬章節:DSE ICT|關聯式資料庫與 SQL 適用年級 中五(S5)ICT 02 題目(10 題) 基礎12 位學生(總分 902),form = 4 有 5 人。`SELECT COUNT(*) FROM Students WHERE form = 4;` 與佔全表百分比是? 基礎同一組分數(最高 95、最低 54)。`SELECT MAX(score), MIN(score) FROM Students;` 的結果與極差? 基礎`SELECT class, AVG(score) FROM Students GROUP BY class;` 在 A 班(5 人)、B 班(4 人)、C 班(3 人)下,哪一班平均分最高、數值多少? 基礎分數排序後前三高是 95、91、88。若寫 `SELECT name, score FROM Students ORDER BY score DESC, name ASC LIMIT 1;`,第一列的分數是多少? 進階各級人數為 form 4 五人、form 5 四人、form 6 三人。`SELECT form FROM Students GROUP BY form HAVING COUNT(*) >= 4;` 回傳幾組? 進階Students 有 12 列,Classes 表有 A、B、C、D 四班。兩表以 class 做 `INNER JOIN`,回傳幾列? 進階同樣兩表改寫 `Classes LEFT JOIN Students`。D 班沒有學生,回傳幾列? 挑戰班別總分:A 班 358、B 班 307、C 班 237。`SELECT class, SUM(score) FROM Students GROUP BY class ORDER BY SUM(score) DESC;` 第一列是? 挑戰form 6 三位學生分數為 88、54、66。`AVG(score)` 對這組的結果,與全表平均 75.17 相差多少? 錯題重練錯題重練:有同學寫 `SELECT class, AVG(score) FROM Students WHERE COUNT(*) > 3 GROUP BY class;` 想篩掉小人數班別。錯在哪裡? 03 答案與一句解說 題號 答案 一句解說 1 COUNT(*) = 5,佔 41.7%(5 ÷ 12 = 41.666…) COUNT(*) 只數列,不計欄;百分比用同一張表的總列數做分母。 2 MAX = 95、MIN = 54,極差 41 分 聚合函數把整欄壓成一個值,極差 = 最大值 − 最小值。 3 C 班最高,平均 79.0(237 ÷ 3) GROUP BY 先把同班列聚成一組,再在組內計平均;A 班 71.6、B 班 76.75。 4 95 ORDER BY 先按 score 由大到小,LIMIT 1 只取第一列,第二排序鍵不會影響。 5 2 組(form 4、form 5) HAVING 在分組後才篩,篩的是組的 COUNT;form 6 只有 3 人被剔除。 6 12 列 每名學生的班別都能在 Classes 找到,所以一對一保留全部 12 列;D 班無學生不出現。 7 13 列(12 個有學生的列 + D 班一列,學生欄為 NULL) LEFT JOIN 保留左表全部列,右表對不上就補 NULL。 8 A 班,358 分 SUM 在組內加總,再按總分由大到小排序;A 班多一人(5 對 4),總分因此高 51,但平均分反而較低。 9 69.3;比全表平均低 5.83 分(75.166… − 69.333…) 先組內平均(208 ÷ 3),再與全表平均相減;差值 5.83 若四捨五入不同會出錯,要用未取整數值。 10 WHERE 在分組前執行,不能用聚合函數;應改寫成 `GROUP BY class HAVING COUNT(*) > 3` 執行次序是 WHERE → GROUP BY → HAVING,所以組的條件一定放在 HAVING。 04 做完之後怎樣跟進 對完答案,只重做錯的那幾題,並在錯題旁寫出錯在哪一步(公式、單位還是抄錯數)。 同一題隔兩日再做一次;兩次都對才可以移到下一份練習。 家長只需看答案欄與解說欄,不必逐題講解。 想找導師跟進這一章?按此登記導師登記 → 本卷題目與答案由 TutorZone 團隊原創編寫,並非任何學校、出版社或考試局的試題;數值與答案均以程式核算。