解法1:
SELECT a1.player_id, a1.event_date, SUM(a2.games_played) games_played_so_far
FROM activity a1,
activity a2
WHERE a1.player_id = a2.player_id
AND a1.event_date > a2.event_date
GROUP BY a1.player_id, a1.event_date
ORDER BY player_id, event_date;解法2:
SELECT a.device_id, a.player_id
FROM
Activity a
JOIN
(
SELECT player_id,MIN(event_date) lastest_date FROM Activity GROUP BY player_id
) t
ON t.player_id = a.player_id AND t.lastest_date = a.event_date解法3:
SELECT
player_id,
device_id
FROM
(
SELECT
ac.*,
if(@player=player_id,@row_num:=@row_num+1,@row_num:=1) row_num,
@player:=player_id
FROM
Activity ac,
(SELECT @row_num := 0,@player:='') b
order by player_id,event_date
) a
where a.row_num =1