我有这个游戏日志表:
+---------+--------+
| game_id | winner |
+---------+--------+
| 1 | Bob |
| 2 | Nick |
| 3 | Nick |
+---------+--------+
在每场比赛中,获胜者只有一位获得最高分的用户。 我正在尝试选择每个游戏的胜利者,例如:
input_file='input_'+case+'.in'
os.system('./a.out input_file)'
但我所有的尝试都没有结果。 有谁可以帮助我?
答案 0 :(得分:1)
您可以使用以下查询:
SELECT g1.game_id, g1.user AS winner
FROM games AS g1
INNER JOIN (
SELECT game_id, MAX(score) AS maxScore
FROM games
GROUP BY game_id
) AS g2 ON g1.game_id = g2.game_id AND g1.score = g2.maxScore
答案 1 :(得分:1)
一种方法是首先创建一个临时表,其中包含游戏ID以及该游戏ID的最高分数。这是我在下面的答案中的内部查询。然后,这可以连接回原始表格,以使用户与该游戏ID和获胜分数相关联。
SELECT t.game_id, t.user AS winner
FROM gamelog t1 INNER JOIN
(
SELECT g.game_id, MAX(g.score) AS maxscore
FROM gamelog g
GROUP BY g.game_id
) t2
ON t1.game_id = t2.game_id AND t1.score = t2.maxscore