zoukankan      html  css  js  c++  java
  • 编写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

  • 相关阅读:
    javascript的全局变量和局部变量
    Google Analytics统计代码GA.JS
    display和visible的区别
    div+css实现带三角箭头提示框
    css兼容IE8的一个简便方法 [转]
    20个值得关注最新的jQuery Plugins
    分享40多个新鲜的jQuery图片和内容幻灯插件
    JQuery插件让图片旋转任意角度且代码极其简单
    Android UI dp sp
    MaxScript用二进制读取方式获取Max文件版本
  • 原文地址:https://www.cnblogs.com/dullbaby/p/2914223.html
Copyright © 2011-2022 走看看