/tutor-prep-s5-ict-databases-sql-practice-2/
/tutor-prep-s5-ict-databases-sql-practice-2/
一般查詢: info@TutorZone.com.hk
辦公時間: 星期一至六 - 上午 9 時至下午 6 時
WhatsApp 星期一至日 - 24 小時
人手接聽: +852 6828 1809
即時客服: +852 9061 3106

DSE ICT|關聯式資料庫與 SQL 配套練習(第二份・聚合與連接)

DSE ICT|關聯式資料庫與 SQL 配套練習(第二份・聚合與連接)

  • 2026-11-04

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 題)

  1. 基礎12 位學生(總分 902),form = 4 有 5 人。`SELECT COUNT(*) FROM Students WHERE form = 4;` 與佔全表百分比是?
  2. 基礎同一組分數(最高 95、最低 54)。`SELECT MAX(score), MIN(score) FROM Students;` 的結果與極差?
  3. 基礎`SELECT class, AVG(score) FROM Students GROUP BY class;` 在 A 班(5 人)、B 班(4 人)、C 班(3 人)下,哪一班平均分最高、數值多少?
  4. 基礎分數排序後前三高是 95、91、88。若寫 `SELECT name, score FROM Students ORDER BY score DESC, name ASC LIMIT 1;`,第一列的分數是多少?
  5. 進階各級人數為 form 4 五人、form 5 四人、form 6 三人。`SELECT form FROM Students GROUP BY form HAVING COUNT(*) >= 4;` 回傳幾組?
  6. 進階Students 有 12 列,Classes 表有 A、B、C、D 四班。兩表以 class 做 `INNER JOIN`,回傳幾列?
  7. 進階同樣兩表改寫 `Classes LEFT JOIN Students`。D 班沒有學生,回傳幾列?
  8. 挑戰班別總分:A 班 358、B 班 307、C 班 237。`SELECT class, SUM(score) FROM Students GROUP BY class ORDER BY SUM(score) DESC;` 第一列是?
  9. 挑戰form 6 三位學生分數為 88、54、66。`AVG(score)` 對這組的結果,與全表平均 75.17 相差多少?
  10. 錯題重練錯題重練:有同學寫 `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 團隊原創編寫,並非任何學校、出版社或考試局的試題;數值與答案均以程式核算。

招募導師及興趣班教練|學術、樂器、體育、藝術、STEM,免費登記,招生與配對交給平台。 了解詳情 →