学生表/教师表/课程表/成绩表常见SQL查询(二)
2. 查询各科成绩的前三名以及分数
[sql]
SELECT s.Sid,s.Cid,s.Score FROM SC s
WHERE s.Score IN
(SELECT TOP(3) Score FROM SC WHERE s.Cid= Cid ORDER BY score DESC)
ORDER BY s.Cid;
/*从SC表中查询出学生学号,课程编号以及成绩,WHERE子句限制了查询出的记录成绩必须在子查询集合内
子查询查询出了各科成绩的前三名并通过课程编号和主查询关联*/
13. 查询有不及格科目的学生的姓名,不及格科目以及不及格科目成绩
[sql]
SELECT s.Sname,c.Cname,ss.Score FROM Student s JOIN SC ss ON s.Sid=ss.Sid JOIN Course c ON ss.Cid=c.Cid
WHERE ss.Score<60
14. 查询所有学生都选修的课程
[sql]
SELECT c.Cname FROM SC s JOIN Course c ON s.Cid=c.Cid
GROUP BY c.Cname HAVING COUNT(s.Sid)=(SELECT COUNT(*) FROM Student)
15. 查询选修了两门或以上的学生姓名及选修总科目
[sql]
SELECT s.Sname,COUNT(ss.Cid) AS TOTAL FROM Student s JOIN SC ss ON s.Sid=ss.Sid
GROUP BY s.Sname HAVING COUNT(ss.Cid)>
1