【发布时间】:2017-12-21 18:49:05
【问题描述】:
我必须获取用户玩得最多的游戏的 player_id 和 game_code。对于每个玩家,列出他玩得最多的游戏代码(不是他玩的所有游戏)
规则:player_id 是唯一的,玩家可以玩多个游戏(我想知道他玩的最多的游戏)。
我尝试使用 max,但在尝试中迷失了方向。
【问题讨论】:
标签: mysql sql join max greatest-n-per-group
我必须获取用户玩得最多的游戏的 player_id 和 game_code。对于每个玩家,列出他玩得最多的游戏代码(不是他玩的所有游戏)
规则:player_id 是唯一的,玩家可以玩多个游戏(我想知道他玩的最多的游戏)。
我尝试使用 max,但在尝试中迷失了方向。
【问题讨论】:
标签: mysql sql join max greatest-n-per-group
我相信你想要这个
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
【讨论】:
另一个答案是正确的,但是您需要在子查询中按 player_id 分组,假设您想要所有这些:
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;
【讨论】: