求计算机系每个学生的选课门数列出学号选课门数和选课情况其中选课情况=3为多1-2门为一般少于1门的少学生表没有专业
假设有以下表格:
表名:学生选课表(student_course)
|字段名|数据类型|说明| |---|---|---| |id|int|学生id| |course_id|int|课程id|
表名:课程表(course)
|字段名|数据类型|说明| |---|---|---| |id|int|课程id| |name|varchar|课程名称|
表名:学生表(student)
|字段名|数据类型|说明| |---|---|---| |id|int|学生id| |name|varchar|学生姓名|
可以使用以下SQL语句进行查询:
SELECT sc.id, COUNT(sc.course_id) AS course_num,
CASE
WHEN COUNT(sc.course_id) >= 3 THEN '多'
WHEN COUNT(sc.course_id) >= 1 AND COUNT(sc.course_id) <= 2 THEN '一般'
ELSE '少'
END AS course_status
FROM student_course sc
INNER JOIN student s ON sc.id = s.id
GROUP BY sc.id
ORDER BY sc.id;
解释:
-
使用INNER JOIN将学生选课表和学生表进行连接,以便获取学生的姓名。
-
使用COUNT函数统计每个学生选课的门数。
-
使用CASE语句根据选课门数判断选课情况,将其分为“多”、“一般”、“少”。
-
使用GROUP BY将结果按学生id分组,以便对每个学生进行统计。
-
使用ORDER BY按学生id排序,使结果更加清晰
原文地址: https://www.cveoy.top/t/topic/gRjy 著作权归作者所有。请勿转载和采集!