diff --git "a/\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.9.21\344\275\234\344\270\232.sql" "b/\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.9.21\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..15c6d9571279b3db521ec3e4d1cdf5ab8c563657 --- /dev/null +++ "b/\346\210\264\344\277\212\351\224\213/\344\275\234\344\270\232/2022.9.21\344\275\234\344\270\232.sql" @@ -0,0 +1,71 @@ +--13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 +select sc.SId,c.Cname,score,t.平均分 from sc +inner join Course c on c.cid = sc.CId +inner join +( +select sid,avg(score)平均分 from sc +group by sid +) t +on t.SId = sc.sid + +order by t.平均分 desc +--14. 查询各科成绩最高分、最低分和平均分: +--以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 +--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 +--要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 +select sc.CId,c.Cname, +(select max(score) from sc sc1 where sc.CId = sc1.CId)最高分, +(select min(score) from sc sc1 where sc.CId = sc1.CId)最低分, +convert(decimal(5,2),(select avg(score) from sc sc1 where sc.cid = sc1.cid))平均分, +concat(convert(decimal(5,2),(select (count(*)*100)/1.0/(select count(*) from sc sc3 where sc3.cid = sc.cid ) from sc sc2 where sc.cid = sc2.cid and sc2.score >= 60)),'%') 及格率, +concat(convert(decimal(5,2),(select (count(*)*100)/1.0/(select count(*) from sc sc3 where sc3.cid = sc.cid ) from sc sc2 where sc.cid = sc2.cid and sc2.score between 70 and 80)),'%') 中等率, +concat(convert(decimal(5,2),(select (count(*)*100)/1.0/(select count(*) from sc sc3 where sc3.cid = sc.cid ) from sc sc2 where sc.cid = sc2.cid and sc2.score between 80 and 90)),'%') 优良率, +concat(convert(decimal(5,2),(select (count(*)*100)/1.0/(select count(*) from sc sc3 where sc3.cid = sc.cid ) from sc sc2 where sc.cid = sc2.cid and sc2.score >= 90)),'%') 优秀率 +from sc +inner join Course c +on c.CId = sc.CId +group by sc.CId,c.Cname + + +--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 +inner 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 s.sid,sname,t1.语文排名,t2.数学排名,t3.英语排名 from student s +left join +( +select sid,dense_rank() over(order by score desc) 语文排名 from sc where cid = '01' +) t1 on t1.sid = s.sid +inner join +( +select sid,dense_rank() over(order by score desc) 数学排名 from sc where cid = '02' +) t2 on t2.sid = s.sid +left join +( +select sid,dense_rank() over(order by score desc) 英语排名 from sc where cid = '03' +) t3 on t3.sid = s.sid +--16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺 +select t.SId,t.总分,dense_rank() over (order by 总分 desc) 排名 +from +( +select sid,sum(score) 总分 from sc +group by sid +) t +--16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 +select t.SId,t.总分,rank() over (order by 总分 desc) 排名 +from +( +select sid,sum(score) 总分 from sc +group by sid +) t \ No newline at end of file diff --git "a/\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.9.21--\345\205\263\350\201\224 \345\255\220\346\237\245\350\257\242.md" "b/\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.9.21--\345\205\263\350\201\224 \345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..c7d14426c53000ad9d1d86a70263a5ef766496f9 --- /dev/null +++ "b/\346\210\264\344\277\212\351\224\213/\347\254\224\350\256\260/2022.9.21--\345\205\263\350\201\224 \345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,12 @@ +# 1.鍏宠仈瀛愭煡璇 + +**锛1锛夊厛浠庝富鏌ヨ鐨勮〃涓殑鍒楀彇鍑虹涓涓硷紝杩涘叆瀛愭煡璇腑锛屽緱鍒板瓙鏌ヨ缁撴灉锛岀劧鍚庤繑鍥炵埗鏌ヨ锛屽垽鏂埗鏌ヨ鐨剋here瀛愬彞鏉′欢锛屽垯杩斿洖鏁翠釜璇彞鐨勭1鏉$粨鏋溿** + +**锛2锛夐噸澶嶄笂杩版搷浣滐紝鐩村埌鎵鏈変富鏌ヨ涓殑琛ㄤ腑鐨勫垪璁板綍鍙栧畬涓烘銆傚緱鍑烘暣涓鍙ョ殑缁撴灉闆嗭紝灏辨槸鏈鍚庣殑绛旀銆** + +```sql +--鍏宠仈瀛愭煡璇細鍐呴儴鏌ヨ闇瑕佸紩鐢ㄥ閮ㄨ〃宸叉煡璇㈠嚭鐨勪俊鎭 +select birth,name 濮撳悕,gender 鎬у埆 from tb_student t1 +where birth = (select min(birth) from tb_student t2 where t2.gender=t1.gender) +``` +