diff --git "a/36\351\273\204\345\257\214\350\264\265/9-21\344\275\234\344\270\232/9-21-\345\205\263\350\201\224\345\255\220\346\237\245\350\257\242/SQLQuery1.sql" "b/36\351\273\204\345\257\214\350\264\265/9-21\344\275\234\344\270\232/9-21-\345\205\263\350\201\224\345\255\220\346\237\245\350\257\242/SQLQuery1.sql" new file mode 100644 index 0000000000000000000000000000000000000000..d38244076af9bf60a09f107114742ffcf73a8592 --- /dev/null +++ "b/36\351\273\204\345\257\214\350\264\265/9-21\344\275\234\344\270\232/9-21-\345\205\263\350\201\224\345\255\220\346\237\245\350\257\242/SQLQuery1.sql" @@ -0,0 +1,47 @@ +--13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 +select s.sid,s.sname,c.cname,sc.score +from SC sc,course c,student s, +(select sid,avg(score) as avgscore from SC +group by sid)as nb +where sc.cid=c.cid and sc.sid=s.sid +order by avgscore desc +; + +--14. 查询各科成绩最高分、最低分和平均分: +--以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 +--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 +--要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 +SELECT + cid AS 课程ID, + COUNT(sid) AS 课程人数,MAX(score) AS 最高分,MIN(score) AS 最低分,AVG(score) AS 平均分, + SUM(及格) / COUNT(sid) AS 及格率,SUM(中等) / COUNT(sid) AS 中等率,SUM(优良) / COUNT(sid) AS 优良率,SUM(优秀) / COUNT(sid) AS 优秀率 +FROM + (SELECT *, + CASE + WHEN score >= 60 THEN 1 ELSE 0 END AS 及格, + CASE + WHEN score >= 70 AND score < 80 THEN 1 ELSE 0 END AS 中等, + CASE + WHEN score >= 80 AND score < 90 THEN 1 ELSE 0 END AS 优良, + CASE + WHEN score >= 90 THEN 1 ELSE 0 END AS 优秀 FROM sc) a +GROUP BY cid +ORDER BY COUNT(sid) DESC,cid +; +--15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 +select a.*,count(a.score) 排名from SC AS a +left join sc AS b on a.cid=b.cid +and a.score