diff --git "a/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/.keep" "b/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\344\275\234\344\270\232.sql" "b/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..9629f025379d2a2a2332f3610ecf6847e3f313d7 --- /dev/null +++ "b/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\344\275\234\344\270\232.sql" @@ -0,0 +1,50 @@ +--13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 +select huhu.SId,平均成绩,sc1.CId,sc1.score, sc2.CId,sc2.score, sc3.CId,sc3.score from( +select SC.SId,AVG(SC.score)平均成绩 from SC +group by SC.SId +) huhu +left join SC sc1 on sc1.SId=huhu.SId and sc1.CId=1 +left join SC sc2 on sc2.SId=huhu.SId and sc2.CId=2 +left join SC sc3 on sc3.SId=huhu.SId and sc3.CId=3 +order by 平均成绩 desc + + +--14. 查询各科成绩最高分、最低分和平均分: + +--以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 + +--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 + +--要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 + +select SC.CId,Cname,MAX(score)最高分,MIN(score)最低分,AVG(score)平均成绩 from SC +inner join Course on Course.CId=SC.CId group by SC.CId,Cname order by COUNT(SC.CId) desc,CId + +--15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 +select s.sid,sname,t1.语文排名,t2.数学排名,t3.英语排名 from student s +left join +( +select sid,rank() over(order by score desc) 语文排名 from sc where cid = '01' +) t1 on t1.sid = s.sid +left join +( +select sid,rank() over(order by score desc) 数学排名 from sc where cid = '02' +) t2 on t2.sid = s.sid +left join +( +select sid,rank() over(order by score desc) 英语排名 from sc where cid = '03' +) t3 on t3.sid = s.sid +--15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次 + +select * from Student s +left join(select SId,DENSE_RANK() over(order by score desc)排名1 from SC where CId=1) sc1 on sc1.SId=s.SId +left join (select SId,DENSE_RANK()over(order by score desc)排名2 from SC where CId=2) sc2 on sc2.SId=s.SId +left join (select SId,DENSE_RANK()over(order by score desc)排名3 from SC where CId=3) sc3 on sc3.SId=s.SId + +--16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺 + +select SId,sum(score)总分,RANK() over(order by sum(score) desc)排名 from SC group by SId + +--16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 + +select SId,sum(score)总分,DENSE_RANK() over(order by sum(score) desc) 排名 from SC group by SId \ No newline at end of file diff --git "a/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\347\254\224\350\256\260.md" "b/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..895e32f2a423617c4b5bc4d12b758172ae60d038 --- /dev/null +++ "b/23\346\236\227\344\270\226\346\266\233/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\347\254\224\350\256\260.md" @@ -0,0 +1,2 @@ +对sql的学习更深入了 +非常充实的一天 \ No newline at end of file