我有两张桌子,Player 和 Shot。Player 和 Shot 之间存在一对多的关系。我想获取一些球员信息,如电子邮件、名字和姓氏,以及球员的最佳射门信息,其中包含各个部分——CalculatedScore、AccuracyScore、DistanceScore 和 TimeScore。CalculatedScore 是最重要的值。所有其他都是该分数的组成部分。
这是我的最大努力:
<!-- language: lang-sql -->
select s_max.PlayerId as playerId_max, s_max.TopScore, s.PlayerId, p.FirstName,
p.LastName, s.CalculatedScore, s.AccuracyScore, s.TimeScore, s.DistanceScore from Player p
inner join Shot s on s.PlayerId = p.Id
inner join (
select distinct MAX(CalculatedScore) over (partition by PlayerId) as TopScore,
PlayerId from Shot s2
) s_max on s.PlayerId = s_max.PlayerId and s.CalculatedScore = s_max.TopScore
order by PlayerId desc
这几乎与我需要的相同,但它返回与最高分并列的每一行。让它返回一行反而令人沮丧。
谢谢你的时间。