900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql写出总分最高的学生姓名_编写SQL语句查询出每个各科班分数最高的同学的名字 班

mysql写出总分最高的学生姓名_编写SQL语句查询出每个各科班分数最高的同学的名字 班

时间:2023-03-02 07:14:54

相关推荐

mysql写出总分最高的学生姓名_编写SQL语句查询出每个各科班分数最高的同学的名字 班

这个问题是在csdn上一位朋友写的,但是答案有点复杂,而且查询使用的效率也不是很好,于是自己也写了一个。以下是表结构和数据,

有以下两张表,

Class表

classid classname

1 高三(一)班

2 高三(二)班

3 高三(三)班

Student表

studentid 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

3 数学 4 80

4 语文 5 79

5 语文 6 58

6 语文 1 66

7 英语 6 76

8 英语 4 87

9 英语 3 100

10 英语 2 69

编写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

select (select top 1 studentname from #temp where classname=x.classname and course=x.course 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.classname,r.course,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

mysql写出总分最高的学生姓名_编写SQL语句查询出每个各科班分数最高的同学的名字 班级名称 课程名称 分数...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。