SQL の Min 関数のヘルプが必要
以下に示すようなテーブルがあります。
+------------+-------+-------+ | | 日付_ | 名前 | スコア | +------------+-------+-------+ | | 2012/07/05 | ジャック | ジャック | 1 | | | 2012/07/05 | ジョーンズ | 1 | | | 2012/07/06 | ジル | 2 | | | 2012/07/06 | ジェームズ | 3 | | | 2012/07/07 | ヒューゴ | 1 | | | 2012/07/07 | ジャック | ジャック | 1 | | | 2012/07/07 | ジム | 2 | +------------+-------+-------+
以下のような出力を取得したいと思います
+------------+------+-------+ | | 日付_ | 名前 | スコア | +------------+------+-------+ | | 2012/07/05 | ジャック | ジャック | 1 | | | 2012/07/06 | ジル | 2 | | | 2012/07/07 | ヒューゴ | 1 | +------------+------+-------+
日付とスコア列だけで MIN() 関数を使用すると、日付ごとに最低のスコアが得られます。これが私が望むものです。同じ日付のスコアが同点の場合、どの行が返されるかは気にしません。出力に名前列も必要なときに問題が発生します。SQL のバリエーションをいくつか試しました (つまり、相関サブクエリを使用した分)、上記のような出力が得られませんでした。誰でも助けてください:)
クエリは次のとおりです
SELECT DISTINCT
A.USername, A.Date_, A.Score
FROM TestTable AS A
INNER JOIN (SELECT Date_,MIN(Score) AS MinScore
FROM TestTable
GROUP BY Date_) AS B
ON (A.Score = B.MinScore) AND (A.Date_ = B.Date_);