SQL面试必会50题123
41. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 (重点)
先根据学号和成绩分类:
SELECT s_id,s_score
FROM Score
GROUP BY s_id,s_score
得到结果如下,该表展示了每个学号不同课程的分数共有几种,比方说语文数学英语都为80分,那么该学号下只会显示一个80分;若语文数学为60分,英语为70分,那么该学号下会显示一个60分,一个70分。
接下来我们就要选出,选课超过1门且不同课程分数相同的学生学号和姓名。
SELECT s_id FROM
(
SELECT a.s_id,a.s_score
FROM Score AS a
INNER JOIN
(
SELECT s_id FROM Score
GROUP BY s_id HAVING COUNT(DISTINCT c_id) > 1 # 选课超过1门的学生学号
) AS b ON a.s_id = b.s_id
GROUP BY a.s_id,a.s_score
) AS c
GROUP BY s_id HAVING COUNT(s_id) > 1
42题有重复
43. 统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列(不重要)
SELECT a.c_id,COUNT(