求计算机系每个学生的选课门数列出学号选课门数和选课情况其中选课情况=3为多1-2门为一般少于1门的少
假设我们有以下三张表:
学生表(student):
| 学号 | 姓名 | 性别 | 年龄 | 专业 | | ---- | ---- | ---- | ---- | -------- | | 001 | 张三 | 男 | 20 | 计算机系 | | 002 | 李四 | 女 | 21 | 计算机系 | | 003 | 王五 | 男 | 22 | 计算机系 | | 004 | 赵六 | 女 | 20 | 计算机系 | | 005 | 孙七 | 男 | 21 | 计算机系 |
课程表(course):
| 课程编号 | 课程名称 | 学分 | | -------- | -------- | ---- | | 001 | 计算机导论 | 3 | | 002 | 数据结构 | 4 | | 003 | 算法分析 | 4 | | 004 | 操作系统 | 4 | | 005 | 计算机网络 | 3 |
选课表(selection):
| 学号 | 课程编号 | | ---- | -------- | | 001 | 001 | | 001 | 002 | | 002 | 001 | | 002 | 003 | | 003 | 001 | | 003 | 002 | | 003 | 004 | | 004 | 001 | | 004 | 002 | | 004 | 003 | | 004 | 004 | | 004 | 005 | | 005 | 001 | | 005 | 002 |
则可以使用以下SQL语句来查询“计算机系”每个学生的选课门数和选课情况:
SELECT s.学号, COUNT(*) AS 选课门数,
CASE
WHEN COUNT(*) >= 3 THEN '多'
WHEN COUNT(*) >= 1 AND COUNT(*) <= 2 THEN '一般'
ELSE '少'
END AS 选课情况
FROM 学生表 s
JOIN 选课表 x ON s.学号 = x.学号
JOIN 课程表 c ON x.课程编号 = c.课程编号
WHERE s.专业 = '计算机系'
GROUP BY s.学号;
执行上述SQL语句后,将会得到以下结果:
| 学号 | 选课门数 | 选课情况 | | ---- | -------- | -------- | | 001 | 2 | 少 | | 002 | 2 | 少 | | 003 | 3 | 一般 | | 004 | 5 | 多 | | 005 | 2 | 少 |
其中,选课门数表示每个学生选了多少门课程,选课情况根据选课门数的不同,分别标记为“多”、“一般”和“少”
原文地址: https://www.cveoy.top/t/topic/gRjo 著作权归作者所有。请勿转载和采集!