sql >> Databáze >  >> RDS >> Mysql

Získejte maximální hodnotu a odpovídající sloupec

Tento dotaz by měl získat to, co potřebujete:

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)

Předpokládá, že remíza je výhrou pro oba hráče.

SQLFiddle

Pokud chcete získat pouze hráče a jejich počet výher, můžete použít tento dotaz:

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

Stačí nahradit {player_id} s hráčem, kterého hledáte, a wins je jejich počet výher nebo remíz.




  1. MySQL alter table add sloupec s chybou syntaxe primárního klíče

  2. Odstraňování problémů Microsoft SQL Server Error 18456

  3. Zkontrolujte, zda je nainstalován SQL server (jakákoli verze)?

  4. Jak seřadit tento dotaz MySQL