大数据查询选课学生的考试情况,要求返回学号,姓名,课程名称及成绩。其中,如有某些学生没有考试的情況,则显示成绩信息为 “缺考”。
时间: 2024-01-04 16:02:08 浏览: 91
Python教学管理系统、学生选课考试系统源代码,基于Django
5星 · 资源好评率100%
假设有如下表格:
**students**
| 学号 | 姓名 |
|------|------|
| 001 | 张三 |
| 002 | 李四 |
| 003 | 王五 |
| 004 | 赵六 |
**courses**
| 课程编号 | 课程名称 |
|----------|----------|
| 001 | 语文 |
| 002 | 数学 |
| 003 | 英语 |
| 004 | 物理 |
**scores**
| 学号 | 课程编号 | 成绩 |
|------|----------|------|
| 001 | 001 | 85 |
| 001 | 002 | 90 |
| 001 | 003 | 缺考 |
| 002 | 001 | 70 |
| 002 | 002 | 缺考 |
| 002 | 003 | 80 |
| 003 | 002 | 95 |
| 003 | 003 | 75 |
| 003 | 004 | 缺考 |
| 004 | 001 | 缺考 |
| 004 | 002 | 60 |
| 004 | 003 | 缺考 |
则可以使用如下 SQL 语句进行查询:
```sql
SELECT students.学号, students.姓名, courses.课程名称,
CASE WHEN scores.成绩 IS NULL THEN '缺考' ELSE scores.成绩 END AS 成绩
FROM students
CROSS JOIN courses
LEFT JOIN scores
ON students.学号 = scores.学号 AND courses.课程编号 = scores.课程编号
ORDER BY students.学号, courses.课程编号;
```
查询结果如下:
| 学号 | 姓名 | 课程名称 | 成绩 |
|------|------|----------|--------|
| 001 | 张三 | 语文 | 85 |
| 001 | 张三 | 数学 | 90 |
| 001 | 张三 | 英语 | 缺考 |
| 001 | 张三 | 物理 | 缺考 |
| 002 | 李四 | 语文 | 70 |
| 002 | 李四 | 数学 | 缺考 |
| 002 | 李四 | 英语 | 80 |
| 002 | 李四 | 物理 | 缺考 |
| 003 | 王五 | 语文 | 缺考 |
| 003 | 王五 | 数学 | 95 |
| 003 | 王五 | 英语 | 75 |
| 003 | 王五 | 物理 | 缺考 |
| 004 | 赵六 | 语文 | 缺考 |
| 004 | 赵六 | 数学 | 60 |
| 004 | 赵六 | 英语 | 缺考 |
| 004 | 赵六 | 物理 | 缺考 |
阅读全文