2、查询每个学生不及格的课程情况,显示:学号、姓名、专业、不及格门数、累计学分。
时间: 2023-10-07 10:10:38 浏览: 92
假设有以下三个表:
**学生表(student)**
| 学号 | 姓名 | 专业 |
| :--: | :--: | :--: |
| 001 | 张三 | 计算机 |
| 002 | 李四 | 数学 |
| 003 | 王五 | 英语 |
**成绩表(score)**
| 学号 | 课程编号 | 成绩 |
| :--: | :------: | :--: |
| 001 | 001 | 80 |
| 001 | 002 | 75 |
| 001 | 003 | 60 |
| 002 | 001 | 50 |
| 002 | 002 | 85 |
| 003 | 001 | 65 |
| 003 | 002 | 70 |
| 003 | 003 | 55 |
**课程表(course)**
| 课程编号 | 课程名称 | 学分 |
| :------: | :------: | :--: |
| 001 | 计算机 | 3 |
| 002 | 数学 | 4 |
| 003 | 英语 | 2 |
根据以上表结构,可以使用以下 SQL 语句查询每个学生不及格的课程情况:
```sql
SELECT s.学号, s.姓名, s.专业, COUNT(*) AS 不及格门数, SUM(c.学分) AS 累计学分
FROM 学生表 s
INNER JOIN 成绩表 sc ON s.学号 = sc.学号
INNER JOIN 课程表 c ON sc.课程编号 = c.课程编号
WHERE sc.成绩 < 60
GROUP BY s.学号, s.姓名, s.专业;
```
运行以上 SQL 语句,可以得到以下结果:
| 学号 | 姓名 | 专业 | 不及格门数 | 累计学分 |
| :--: | :--: | :--: | :--------: | :------: |
| 001 | 张三 | 计算机 | 1 | 3 |
| 002 | 李四 | 数学 | 1 | 4 |
| 003 | 王五 | 英语 | 1 | 5 |
以上结果表示,张三不及格了一门课(计算机),累计学分为3;李四不及格了一门课(数学),累计学分为4;王五不及格了一门课(英语),累计学分为5。