0

我有一个带有列的表格:游戏类型得分时间,我想在一个游戏中选择最好的分数。在那个分数上,我想在特定的游戏、类型和分数上获得最低的时间。

我与 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 回答