pinterest网页入口,网站优化排名易下拉排名,织梦cms sql注入破解网站后台管理员账号密码,淮阳住房和城乡建设局网站sql-50练习题16-20 前言数据库表结构介绍学生表课程表成绩表教师表 1-6 检索01课程分数小于60#xff0c;按分数降序排列的学生信息1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩1-8 查询各科成绩最高分、最低分和平均分#xff1a;以如下形式… sql-50练习题16-20 前言数据库表结构介绍学生表课程表成绩表教师表 1-6 检索01课程分数小于60按分数降序排列的学生信息1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩1-8 查询各科成绩最高分、最低分和平均分以如下形式显示课程ID课程name最高分最低分平均分及格率中等率优良率优秀率1-9 查询学生的总成绩并进行排名2-0 查询学生的总成绩并进行排名 前言 sql真的非常灵活一个题目可能有很多很多种解法我记录的只是我自己的一个解题思路如果大家有更好的不同解法欢迎在评论区一起探讨 ps有些题可能解法会重复比如求大于我们下一个题可能是求小于大家如果第一遍没有做出来看了我写的之后有了思路可以试一下反面的解法。 数据库表结构介绍
学生表 课程表 成绩表 教师表 1-6 检索01课程分数小于60按分数降序排列的学生信息
SELECTa.*, b.c_id,b.s_score
FROMstudent a,score b
WHEREa.s_id b.s_id
AND b.c_id 01
AND b.s_score 60
ORDER BYb.s_score DESC;结果如下
1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
SELECTa.s_id,(SELECTs_scoreFROMscoreWHEREs_id a.s_idAND c_id 01) AS 语文,(SELECTs_scoreFROMscoreWHEREs_id a.s_idAND c_id 02) AS 数学,(SELECTs_scoreFROMscoreWHEREs_id a.s_idAND c_id 03) AS 英语,round(avg(s_score), 2) AS 平均分
FROMscore a
GROUP BYa.s_id
ORDER BY平均分 DESC;结果如下
1-8 查询各科成绩最高分、最低分和平均分以如下形式显示课程ID课程name最高分最低分平均分及格率中等率优良率优秀率 – round 函数主要是进行数值的小数点保留 – 1、round(x,d) x指要处理的数d是指保留几位小数。这里有个值得注意的地方是d可以是负数这时是指定小数点左边的d位整数位为0,同时小数位均为0 – 2、round(x) ,其实就是round(x,0),也就是默认d为0 SELECTa.c_id,b.c_name,MAX(s_score),MIN(s_score),AVG(s_score),ROUND(100 * (SUM(CASEWHEN a.s_score 60AND a.s_score 90 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 及格率,ROUND(100 * (SUM(CASEWHEN a.s_score 70AND a.s_score 80 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 中等率,ROUND(100 * (SUM(CASEWHEN a.s_score 80AND a.s_score 90 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 优良率,ROUND(100 * (SUM(CASEWHEN a.s_score 90 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 优秀率
FROMscore a
LEFT JOIN course b ON a.c_id b.c_id
GROUP BYa.c_id结果如下
1-9 查询学生的总成绩并进行排名
SELECT b.*, a.c_id, a.s_score, (SELECT COUNT(DISTINCT a2.s_score) FROM score a2 WHERE a2.c_id a.c_id AND a2.s_score a.s_score) AS rk
FROM score a
JOIN student b ON a.s_id b.s_id;结果如下
2-0 查询学生的总成绩并进行排名
SELECTsuma.*, (SELECTcount(avgscore)FROM(SELECTa.s_id,avg(a.s_score) avgscoreFROMscore aGROUP BYa.s_id) sumbWHEREsuma.avgscore sumb.avgscore) 1 rk
FROM(SELECTa.s_id,avg(a.s_score) avgscoreFROMscore aGROUP BYa.s_id) suma
ORDER BYrk ASC结果如下