2017-12-21 15 views
0

私は、ユーザーが最もプレイしたゲームのplayer_idとgame_codeを取得する必要があります。SQLは最大値に基づく条件を満たします

ルール:player_idは一意であり、プレイヤーは複数のゲームをプレイできました(彼が最もプレイしたゲームを見つけたいと思っています)。

私は最大で試しましたが、試しに迷ってしまいました。ここで

はフィドルです:http://sqlfiddle.com/#!9/0cf0f/2

答えて

1

私はあなたが他の答えは右のトラックにですが、サブクエリでplayer_idによってグループに必要なこの

SELECT t.player_id, t.game_code, t.minutes_played 
FROM (
     SELECT player_id, MAX(minutes_played) as maxi 
     FROM play_table 
     WHERE game_code in ('123','124','125','126','129') 
     GROUP BY player_id 
) as m 
INNER JOIN play_table as t 
    ON t.player_id = m.player_id and 
    t.minutes_played = m.maxi 

sqlfiddle demo

+0

サウンド本当によかった!私は今、私のPCを去らなければならないが、それは午前中にそれを最初に試して、それがうまくいけば解決策をupvote! ULTRAの迅速な提案をありがとうございます! お祝い – user3782821

+0

私が他の提案で投稿したように、彼が最もプレイした各ユーザーのgame_codeを取得したいと考えています。申し訳ありませんが、私の説明が十分明確でない場合! – user3782821

+0

@ user3782821 ok、編集したバージョンを検討してください –

0

をしたいと考えていますあなたがそれらのすべてを望むと仮定します:

SELECT m.player_id, pt.game_code, pt.minutes_played 
FROM (
    SELECT player_id, max(minutes_played) as maxi 
    FROM play_table 
    GROUP BY player_id 
) as m 
INNER JOIN play_table pt 
ON m.player_id = pt.player_id 
AND pt.minutes_played = m.maxi; 
+0

提案していただきありがとうございますが、あまりにも多くの結果を得ています。私はplayer_idとgame_codeを取得する必要がありますが、1つのゲームのためには彼が最もプレイしました。例えば、player_id 1はgame_code 125を持つべきである。 player_id 2の場合は、game_code 124などのようにする必要があります。 – user3782821

関連する問題