亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

查詢每個(gè)各科班分?jǐn)?shù)最高同學(xué)的名字,班級(jí)名稱,課程名稱,分?jǐn)?shù)的 -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.ishadingyu.com - 電腦資料】

   

    這個(gè)問題是在csdn上一位朋友寫的,但是答案有點(diǎn)復(fù)雜,而且查詢使用的效率也不是很好,于是自己也寫了一個(gè),

查詢每個(gè)各科班分?jǐn)?shù)最高同學(xué)的名字,班級(jí)名稱,課程名稱,分?jǐn)?shù)的

。以下是表結(jié)構(gòu)和數(shù)據(jù),

    有以下兩張表,

    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 數(shù)學(xué) 2 99

    2 數(shù)學(xué) 3 60

    3 數(shù)學(xué) 4 80

    4 語文 5 79

    5 語文 6 58

    6 語文 1 66

    7 英語 6 76

    8 英語 4 87

    9 英語 3 100

    10 英語 2 69

    編寫SQL語句查詢出每個(gè)各科班分?jǐn)?shù)最高的同學(xué)的名字,班級(jí)名稱,課程名稱,分?jǐn)?shù)(問題有點(diǎn)繞口)

    朋友的答案:

    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 '班級(jí)',course as '課程',max(score) as '分?jǐn)?shù)'

    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

   

最新文章