Player と Shot の 2 つのテーブルがあります。Player と Shot の間には 1 対多の関係があります。Email、FirstName、LastName などのプレーヤー情報と、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
これは私が必要としているものとほとんど同じですが、トップ スコアに結びつく各行を返します。代わりに1行を返すようにするのは、驚くほどイライラします。
御時間ありがとうございます。