0

列のあるテーブルがあります: game-type-score-time で、ゲームの 1 つのタイプで最高のスコアを選択したいです。そして、そのスコアで、特定のゲーム、タイプ、スコアでの最低タイムを上げたいと思います。

group by を試してみましたが、欲しいものが得られませんでした。

SELECT game, type, MAX(score),MIN(time)
FROM table
GROUP BY game,type 

私が欲しいもの:これが私のテーブルなら:

 0/1/0/672
 0/1/0/749
 0/1/1/2091
 0/1/1/3252

 0/5/0/5088
 0/5/0/5504
 0/5/1/6482
 0/5/2/9408
 0/5/2/24616
 0/5/3/6592 
 0/5/4/8706

 1/1/0/700
 1/1/1/1151

 1/5/5/4808

 3/1/1/1038

次のような出力が必要です。

 0/1/1/2091
 0/5/4/8706
 1/1/1/1151
 1/5/5/4808
 3/1/1/1038

この結果を得る最も効率的な方法は何ですか?

4

1 に答える 1

2

単一の集計でこれを行うことはできません。

SELECT s.game, s.type, s.score, MIN(t.time) AS time
FROM (
    SELECT tt.game, tt.type, MAX(tt.score) AS score 
    FROM table tt 
    GROUP BY tt.game, tt.type
) s 
INNER JOIN table t ON s.game = t.game AND s.type = t.type AND s.score = t.score
GROUP BY s.game, s.type, s.score
于 2013-11-09T23:18:42.383 に答える