课程进度 92% · 第9/9章第9/9章 · 标签 1/4
— 1 —
业务数据分析实战
结合实际业务场景,综合运用SQL知识完成以下数据分析任务。这些场景涵盖常见的报表统计、异常检测和排名查询。
- 统计每个班级的及格率、最高分、最低分
- 找出所有成绩异常(如分数 < 0 或 > 100)的学生
- 查询每个班级分数排名前3的学生姓名和分数
- 统计各科老师的平均授课学生数
- 查询连续3次考试都进步的学生
📖可结合分组、聚合、窗口函数等知识点完成。建议先理清业务逻辑再写SQL。
— 2 —
参考答案
sql
1
-- 班级及格率、最高分、最低分
2
SELECT class_id,
3
COUNT(CASE WHEN score >= 60 THEN 1 END) * 1.0 / COUNT(*) AS 及格率,
4
MAX(score) AS 最高分,
5
MIN(score) AS 最低分
6
FROM students
7
GROUP BY class_id;
8
9
-- 成绩异常检查
10
SELECT * FROM students
11
WHERE score < 0 OR score > 100;
12
13
-- 各班前3名
14
SELECT name, class_id, score
15
FROM (
16
SELECT name, class_id, score,
17
ROW_NUMBER() OVER(PARTITION BY class_id ORDER BY score DESC) AS rn
18
FROM students
19
) t
20
WHERE rn <= 3;
✓分组统计用GROUP BY + 聚合函数。CASE WHEN实现条件计数。窗口函数ROW_NUMBER()实现组内排名。