求助!求助!!求助!!!sql server语句求助!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:53:36
已知的条件是有一个student表分别有name,course,mark三个例,五个学科,30个学生。
要求查出每门第一的名字和分数(包括并列)小弟我找了一天也没找到,只能查出分数还不包括并列的。
select name from student where mark in(select max(smark) from student group by course) group by name
不知道对不对,还请各位大大指点一下。谢谢!!!!!!!!!!!!!!!!
不行啊,这样也没有分数啊!它是要名字和分数一起出来。用=号报错。

要分数呀,那我改一下吧,索性将三项都查出来算了

好像都不对,我也写一个:
select name ,course,mark from student where (course,mark)in (select a.course,max(a.mark) from student a group by a.course)
如果SQLserver不支持列分组的话采用连接查询吧

select a.name,a.course,a.mark from student a inner join (select distinct b.course,max(b.mark) max_mark from student b group by b.course)tt on (a.course = tt.course and a.mark = tt.max_mark)

还可以这样
select a.name,a.course,a.mark from student a where a.mark = (select max(b.mark) from student b where b.course = a.course)

以上应该都可以查出来的,但或许最后一个比较好

select name,course,max(mark) from student group by name,course

select name from student where mark =(select max(mark) from student group by course)这样就行了,因为mark不是字符串型的,所以应该用“=”,这样就能选出每门课的最高分了,重复的也能够列出来