sql >> Base de Datos >  >> RDS >> Mysql

Obtenga el valor máximo y la columna correspondiente

Esta consulta debería obtener lo que necesita:

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)

Asume que un empate es una victoria para ambos jugadores.

SQLFiddle

Si desea obtener solo el jugador y su número de victorias, puede utilizar 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

Simplemente reemplace {player_id} con el jugador que buscas y wins es su número de victorias o empates.