mysql写出总分最⾼的学⽣姓名_编写SQL语句查询出每个各科班分数最⾼的同学的名字,班级。。。
这个问题是在csdn上⼀位朋友写的,但是答案有点复杂,⽽且查询使⽤的效率也不是很好,于是⾃⼰也写了⼀个。以下是表结构和数据,有以下两张表,
Class表
classid classname
去重函数sql
1 ⾼三(⼀)班
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小时内删除。