mysql写出总分最⾼的学⽣姓名_编写SQL语句查询出每个各科班分数最⾼的同学的名字,班级。。。
这个问题是在csdn上⼀位朋友写的,但是答案有点复杂,⽽且查询使⽤的效率也不是很好,于是⾃⼰也写了⼀个。以下是表结构和数据,有以下两张表,
Class表
classid classname
去重函数sql1 ⾼三(⼀)班
2 ⾼三(⼆)班
3 ⾼三(三)班
web控件Student表
mysql面试题csdnstudentid studentName classid
1 张三 2
2 李四 1
3 王五 1
4 赵六 3
5 钱七 2
6 孙九 3
score表
scoreid course studentid score
1 数学
2 99
2 数学
3 60
xor怎么算3 数学
4 80
4 语⽂
5 79
5 语⽂
6 58
6 语⽂ 1 66
7 英语 6 76
8 英语 4 87
9 英语 3 100
10 英语 2 69erp是什么软件
编写SQL语句查询出每个各科班分数最⾼的同学的名字,班级名称,课程名称,分数(问题有点绕⼝)
朋友的答案:
if exists(select count(*) from sysobjects where type='U' and name='#temp')
drop table #temp
select p.studentid,studentname,p.classid,classname,course,score into #temp from
( select studentid,studentname,student.classid,classname
from student right outer join class on student.classid=class.classid) as p
left outer join score on p.studentid=score.studentid
vba选择下一行select (select top 1 studentname from #temp where classname=x.classname and urse order by score desc) as '姓名',classname as '班级',course as '课程',max(score) as '分数'
from #temp x group by classname,course order by classname
我⾃⼰的答案:
select t.classname,course,max(score) 'score',min(t.studentName) 'studentName' from (select
s.studentName,c.urse,r.score from student s inner join class c on s.classid=c.classid inner join score r on r.studentid=s.studentid ) as t group by classname,course
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论