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

房贷首付3 2005-05-26 04:48:51
在SQL Server 数据库中,有一个表StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int ,成绩),写一条SQL语句,筛选出每门课程的前两名的学生编号,课程编号,成绩并排序
帮忙写条sql吧,或者给点思路,谢谢,
top 2 和 group 怎么同时用?
...全文
159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
谢谢!
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
试试先谢谢了
lovefootball 2005-05-26
  • 打赏
  • 举报
回复
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)

你在用join把学生id加进去就可以了
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
wen3062(鼓手) 的写法如果一门课程记录超过了2个,也不能适合2们课程的,
现在急啊,问题好像不是用top和group,order就能解决的,请教各位了!!!
lovefootball 2005-05-26
  • 打赏
  • 举报
回复
楼上的写法只适合两门课程吧
lovefootball 2005-05-26
  • 打赏
  • 举报
回复
楼上的写法只适合两门课程吧
lovefootball 2005-05-26
  • 打赏
  • 举报
回复
楼上的写法只适合两门课程吧
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
不行啊,这样只能选出前4条吧,而不是每一科目的前两名
还望大侠帮忙
鼓手 2005-05-26
  • 打赏
  • 举报
回复
下面这样就可以了。

SELECT TOP 4 Achievement, StudentID, CourseID
FROM StudentAchievement
GROUP BY Achievement, CourseID, StudentID
ORDER BY Achievement DESC
鼓手 2005-05-26
  • 打赏
  • 举报
回复
SELECT TOP 4 Achievement, StudentID, CourseID
FROM StudentAchievement
GROUP BY Achievement, CourseID, StudentID
ORDER BY MAX(Achievement) DESC
房贷首付3 2005-05-26
  • 打赏
  • 举报
回复
在线等啊,急!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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