sql-选出每门课程的前两名的学生编号,课程编号,成绩并排序,谢谢

房贷首付3 2005-05-26 04:57:38
在SQL Server 数据库中,有一个表StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int ,成绩),写一条SQL语句,筛选出每门课程的前两名的学生编号,课程编号,成绩并排序
帮忙写条sql吧,或者给点思路,谢谢,
top 2 和 group 怎么同时用?
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruodeer 2005-05-26
  • 打赏
  • 举报
回复
agree libin_ftsafe(子陌红尘) ( ) 信誉:100
把StudentAchievement表自身连接 方便!但是楼主没说是升序还是降序,要是升序的话就默认了!
select
a.*
from
StudentAchievement a
where
a.StudentID in (select top 2 StudentID from StudentAchievement where StudentAchievement.CourseID=a.CourseID order by StudentAchievement.chievement desc)
子陌红尘 2005-05-26
  • 打赏
  • 举报
回复
select
a.*
from
StudentAchievement a
where
a.StudentID in (select top 2 StudentID from StudentAchievement where CourseID=a.CourseID order by Achievement desc)
taoxianxue 2005-05-26
  • 打赏
  • 举报
回复
学习一下 呵呵
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
问题已解决,谢谢大家(感谢lovefootball(蟑螂))
给出答案以供参考:
Select CourseID,Max(Achievement)
From StudentAchievement
Where Achievement Not In (Select Max(Achievement) From StudentAchievement Group By CourseID)
Group By CourseID
Union
(Select CourseID,Max(Achievement)
From StudentAchievement
Where Achievement In (Select Max(Achievement) From StudentAchievement Group By CourseID) Group By CourseID)
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
没有给出,不过我想应该是学生编号StudentID
taoxianxue 2005-05-26
  • 打赏
  • 举报
回复
没有主键吗?

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧