私はこのようなクエリを持っています:
SELECT PlayerID, COUNT(PlayerID) AS "MatchesPlayed", Name, Role, Team,
SUM(Goals) As "TotalGoals", SUM(Autogoals) As "TotalAutogoals",
SUM(...)-2*SUM(...)+2*SUM(...) AS Score, ...
FROM raw_ordered
GROUP BY PlayerID
ORDER BY Score DESC
ここでraw_ordered
、各行は、ある試合でのあるプレーヤーのパフォーマンスを時系列の逆順に示しています。
このクエリから取得したものでグループ化しているのでPlayerID
、各行が一部のプレーヤーに関する累積データを提供するテーブルです。現在、集計関数を持つ列に問題はありません。私の問題はTeam
コラムにあります。
プレーヤーはシーズン中にチームを変更できます。ここで私が興味を持っているのは、彼が最後 Team
に遊んだことです。そのためSELECT
、各グループで最初に出会った値をTeam
列(または、一般に、非集計関数の列)に取るように指示する方法が必要です。 )。
残念ながら、SQLiteでこれを行う(簡単な)方法は見つからないようです。ドキュメントにSELECT
は次のように書かれています。
式が集計式の場合、グループ内のすべての行で評価されます。それ以外の場合は、グループ内から任意に選択された単一の行に対して評価されます。
この動作を変更する方法についての提案はなく、集約関数の間に、最初に遭遇した値をとるだけのものを見つけることができません。
何か案が?