导航菜单

SQL 学习/实战练习
课程进度 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()实现组内排名。