/cn-tutor-prep-s5-ict-databases-sql-practice-2/
/cn-tutor-prep-s5-ict-databases-sql-practice-2/
简体版
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,免费登记,招生与配对交给平台。 了解详情 →