求计算机系每个学生的选课门数学生表没有专业列出学号选课门数和选课情况其中选课情况=3为多1-2门为一般少于1门的少
由于题目中没有给出学生选课的记录表,假设有一个选课记录表“选课表”,包含学生选课的信息,其中学号为“student_id”,选课门数为“course_num”,选课情况为“course_status”,则可以使用以下SQL语句查询“计算机系”每个学生的选课门数和选课情况:
SELECT s.student_id,
COUNT(*) AS course_num,
CASE
WHEN COUNT(*) >= 3 THEN '多'
WHEN COUNT(*) >= 1 AND COUNT(*) < 3 THEN '一般'
ELSE '少'
END AS course_status
FROM 学生表 s
JOIN 选课表 c ON s.student_id = c.student_id
WHERE s.专业 = '计算机系'
GROUP BY s.student_id;
解释一下SQL语句的各部分:
- 首先使用了JOIN操作将学生表和选课表连接起来,并使用WHERE条件筛选出专业为“计算机系”的学生;
- 然后使用GROUP BY对学生表中的学生进行分组(按学号分组),并使用COUNT统计每个学生选了多少门课程;
- 最后使用CASE语句根据选课门数判断选课情况,生成“course_status”列。
最终查询结果将包含三列数据:学号、选课门数、选课情况
原文地址: https://www.cveoy.top/t/topic/gRky 著作权归作者所有。请勿转载和采集!