查询数据库数据 , 如SELECT语句是数据库语言中最核心,最重要的语句,也是使用频率最高的语句. 因此需要多加练习,这是练习系列的答案4
31、查询所有学生的选课情况;
SELECT st.sno,st.sname,c.cname FROM student st,sc,course c
WHERE sc.sno=st.sno AND sc.cno=c.cno;
32、查询任何一门课程成绩在70 分以上的姓名、课程名称和分数;
SELECT st.sname,c.cname,sc.score FROM student st,sc,course c
WHERE sc.sno=st.sno AND sc.cno=c.cno AND sc.score>70
33、查询不及格的课程,并按课程号从大到小排列
SELECT sc.sno,c.cname,sc.score FROM sc,course c
WHERE sc.cno=c.cno AND sc.score<60 ORDER BY sc.cno DESC;
34、查询课程编号为c001 且课程成绩在80 分以上的学生的学号和姓名;
SELECT st.sno,st.sname,sc.score FROM sc,student st
WHERE sc.sno=st.sno AND cno='c001' AND score>80;
35、求选了课程的学生人数
SELECT COUNT(DISTINCT sno) FROM sc;
36、查询选修“谌燕”老师所授课程的学生中,成绩最高的学生姓名及其成绩
SELECT st.sname,score FROM student st,sc ,course c,teacher t
WHERE
st.sno=sc.sno AND sc.cno=c.cno AND c.tno=t.tno
AND t.tname='谌燕' AND sc.score=
(SELECT MAX(score)FROM sc WHERE sc.cno=c.cno)
37、查询各个课程及相应的选修人数
SELECT cno,COUNT(sno) FROM sc GROUP BY cno;
38、查询不同课程成绩相同的学生的学号、课程号、学生成绩
SELECT a.* FROM sc a ,sc b WHERE a.score=b.score AND a.cno<>b.cno
39、查询每门功课成绩最好的前两名
SELECT * FROM (
SELECT sno,cno,score,row_number()over(PARTITION BY cno ORDER BY score DESC) my_rn FROM sc t
)
WHERE my_rn<=2
40、统计每门课程的学生选修人数(超过10 人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
SELECT cno,COUNT(sno) FROM sc GROUP BY cno
HAVING COUNT(sno)>10
ORDER BY COUNT(sno) DESC,cno ASC;