Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtenha o valor máximo e a coluna correspondente


Esta consulta deve obter o que você precisa:
SELECT
    player_id, game_id, score
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)

Assume-se que um empate é uma vitória para ambos os jogadores.

SQLFiddle

Se você deseja obter apenas o jogador e seu número de vitórias, pode usar esta consulta:
SELECT
    player_id, COUNT(*) AS wins
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)
WHERE player_id = {player_id}
GROUP BY player_id

Basta substituir {player_id} com o jogador que você está procurando e wins é o número de vitórias ou empates.