Mysql 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

1. 查询课程ID为‘01’ 的课程的成绩第2名到第3名的学生信息及该课程成绩

1SELECT  d.*, c.排名, c.s_score, c.c_id FROM  ( SELECT a.s_id, a.s_score, a.c_id, @i:=@i+1 AS 排名 FROM score a,(SELECT @i:=0)s WHERE a.c_id='01' ORDER BY a.s_score DESC )c 2LEFT JOIN 3 student d 4ON 5 c.s_id = d.s_id 6WHERE 7 排名 BETWEEN 2 AND 3

2. 查询课程ID为‘02’ 的课程的成绩第2名到第3名的学生信息及该课程成绩

1SELECT 2  d.*, c.排名, c.s_score, c.c_id 3FROM 4  ( SELECT a.s_id, a.s_score, a.c_id, @j:=@j+1 AS 排名 FROM score a,(SELECT @j:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c 5LEFT JOIN 6 student d 7ON 8 c.s_id = d.s_id 9WHERE 10 排名 BETWEEN 2 AND 3

3. 查询课程ID为‘03’ 的课程的成绩第2名到第3名的学生信息及该课程成绩

1SELECT 2  d.*, c.排名, c.s_score, c.c_id 3FROM 4  ( SELECT a.s_id, a.s_score, a.c_id, @k:=@k+1 AS 排名 FROM score a,(SELECT @k:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c 5LEFT JOIN 6 student d 7ON 8 c.s_id = d.s_id 9WHERE 10 排名 BETWEEN 2 AND 3

4. 联合

1SELECT 2  d.*, c.排名, c.s_score, c.c_id 3FROM 4  ( SELECT a.s_id, a.s_score, a.c_id, @i:=@i+1 AS 排名 FROM score a,(SELECT @i:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c 5LEFT JOIN 6 student d 7ON 8 c.s_id = d.s_id 9WHERE 10 排名 BETWEEN 2 AND 3 11UNION 12SELECT 13  d.*, c.排名, c.s_score, c.c_id 14FROM 15  ( SELECT a.s_id, a.s_score, a.c_id, @j:=@j+1 AS 排名 FROM score a,(SELECT @j:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c 16LEFT JOIN 17 student d 18ON 19 c.s_id = d.s_id 20WHERE 21 排名 BETWEEN 2 AND 3 22UNION 23SELECT 24  d.*, c.排名, c.s_score, c.c_id 25FROM 26  ( SELECT a.s_id, a.s_score, a.c_id, @k:=@k+1 AS 排名 FROM score a,(SELECT @k:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c 27LEFT JOIN 28 student d 29ON 30 c.s_id = d.s_id 31WHERE 32 排名 BETWEEN 2 AND 3

5. 查询结果

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

这道SQL有一点...不一样?

原题目从课程表(课程号,课程名)学生表(学号,年龄,性别,课程号,分数)中查询出平均分大于60分的学生的学号及课程成绩最初尝试一开始不太会做,直接在网络上搜索答案,找到的却只有这样的题目答案sqlSELECTsid,AVG(sscore)FROMscoreGROUPBYsidHAVINGavg(sscore)60单表操作

SQL 经典题型解答(6)

SQL经典习题解答(6)23、统计各科成绩各分数段人数:课程编号,课程名称,\10085\,\8570\,\7060\,\060\及所占百分比SELECTt1.,t2.all_num,CONCAT(ROUND(t1.num/t2.all_num

SQL_50题

\1、查询“1001”课程比“1002”课程成绩高的所有学生的学号;selecta.Sfrom(selectS,scorefromscwhereC1001)a,(selectS,scorefromscwhereC1002)bwherea.scoreb.scoreanda.s

SQL题目

Student(S,Sname,Sage,Ssex)学生表      S:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C,Cname,T)课程表                   C,课程编号;Cname:课程名字;T:教师编号SC(S,C,score)成绩表