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

すべてのSQL-SQLiteクエリをcaseステートメントで結合する方法は?

    まず、各プレーヤーの合計スコアを取得してから、playersに参加する必要があります 。
    次に、FIRST_VALUE()ウィンドウ関数を使用して、各グループのトッププレーヤーを取得します。

    SELECT DISTINCT p.group_id, 
           FIRST_VALUE(p.player_id) OVER (PARTITION BY p.group_id ORDER BY m.score DESC) winner_id
    FROM players p
    LEFT JOIN (
      SELECT player, SUM(score) score
      FROM (
        SELECT match_id, first_player player, first_score score FROM matches
        UNION ALL
        SELECT match_id, second_player, second_score FROM matches
      ) t
      GROUP BY player
    ) m ON m.player = p.player_id  
    

    デモ をご覧ください。 。




    1. PostgreSQLでヒストグラムを作成する方法

    2. SQLサーバーでBEFOREUPDATEDトリガーを実行するにはどうすればよいですか?

    3. 合計に達するまで選択する方法

    4. pdoexecutegiveのエラー