在我的项目中有两个表。学生表和课程表。它们通过外键连接(学生表中的Id和课程表中的StudentId)。我想返回每节课的最高分数和学生的名字。我知道我应该实现聚合函数。它可以很好地返回所有课程的最高分数,但是我不知道如何返回特定课程的最高分数(例如数学)。
select s.Name, l.Grade
from Students s
inner join Lessons l on s.Id = l.StudentId
where l.Grade = (select MAX(Grade) from Lessons)
public class StudentClass
{
public int Id { get; set; }
public string Name { get; set; }
public List<Lesson> Lessons { get; set; }
}
public class Lesson
public int Id { get; set; }
public string Name { get; set; }
public int Grade { get; set; }
public int StudentId { get; set; }
[ForeignKey("StudentId")]
public StudentClass Student { get; set; }
}
1条答案
按热度按时间rhfm7lfc1#
更现代的解决方案是使用ROW_NUMBER:
这将为每个较小的名称创建一个计数器(按级别降序排序),然后检索第一个结果