touchfeelin
2014-12-06 14:14
采纳率: 0%
浏览 14.7k

求sql查询,找出每门功课成绩最高的学生

一个表格有三列:名字、科目、成绩, 科目中有四门功课,怎么设计查询找出每门功课中成绩 最高的那条信息
想到用group by 可是只能查询功课中最高的成绩,不能显示姓名

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • devmiao 2014-12-06 14:19

    select * from 表 where 成绩 in (select max(成绩) in 表 group by 成绩)

    评论
    解决 6 无用 3
    打赏 举报
  • guwei4037 2014-12-06 15:18

    declare @名字 nchar(10),@成绩 smallint

    select @名字=名字,@成绩=max(成绩) from 表 group by 名字

    select * from 表
    where 表.名字 = @名字 and 表.成绩 =@成绩

    评论
    解决 1 无用
    打赏 举报
  • guwei4037 2014-12-06 15:27

    select a.名字,a.科目,a.成绩 from 表2 a inner join
    (select 名字,max(成绩)as 成绩 from 表2 group by 名字) b
    on a.名字 = b.名字 and a.成绩= b.成绩

    评论
    解决 无用
    打赏 举报
  • 张得一 2014-12-06 15:56

    select * from 表 where 成绩 in (select max(成绩) in 表 group by 科目)

    评论
    解决 无用
    打赏 举报
  • 张得一 2014-12-06 15:58

    select * from 表 where 科目+convert(char(5),成绩) in (select 科目+convert(char(5)+max(成绩)) in 表 group by 科目)

    评论
    解决 无用
    打赏 举报
  • 没头脑骑士 2014-12-06 16:23

    select * from (select 名字, 科目, 成绩, rank() over(partition by 科目 order by 成绩 desc) ranking from 表) where ranking = 1;

    评论
    解决 无用
    打赏 举报
  • touchfeelin 2014-12-07 15:45

    感谢大家献策啊,呃,这个表……我想起head in first中的一句话,设计糟糕的表应当重新设计,而不应该迁就于更复杂的查询。

    评论
    解决 无用
    打赏 举报
  • sanfenzhongao 2016-12-14 04:02

    select * from
    student st,(select max(st.score) max_sc, st.course from student st group by st.course) res
    where res.max_sc = st.score and res.course = st.course

    评论
    解决 无用
    打赏 举报
  • Ari369 2021-01-19 19:19

    select b.* from (select subject,max(score) m from grade GROUP BY subject) t,grade b where t.subject=b.subject and t.m=b.score

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题