Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni il valore massimo e la colonna corrispondente

Questa query dovrebbe ottenere ciò di cui hai bisogno:

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)

Presuppone che un pareggio sia una vittoria per entrambi i giocatori.

SQLFiddle

Se vuoi ottenere solo il giocatore e il suo numero di vincite, puoi utilizzare questa query:

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

Sostituisci semplicemente {player_id} con il giocatore che stai cercando e wins è il numero di vittorie o pareggi.