sql >> データベース >  >> RDS >> Mysql

最大値と対応する列を取得します

    このクエリは必要なものを取得する必要があります:

    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)
    

    同点は両方のプレーヤーの勝利であると想定しています。

    SQLFiddle

    プレーヤーとその勝利数だけを取得したい場合は、次のクエリを使用できます:

    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
    

    {player_id}を置き換えるだけです 探しているプレーヤーとwins 勝ちまたは引き分けの数です。




    1. 外部キーは一意でないインデックスを参照できますか?

    2. PDOエラー:SQLSTATE [HY000]:一般エラー:2031

    3. OracleSQLで2つの日付間の経過時間を検索します

    4. ユーザー定義関数でRAND()を使用する