Game Play Analysis II

easy database sql window function

Problem

Return each player's device_id on their first login date.

Inputrows = [(1,2,'2016-03-01',5),(1,2,'2016-05-02',6),(2,3,'2017-06-25',1)]
Output[(1,2),(2,3)]
One pass keeps (min_date, device); a row matching min_date overwrites with that device.

SELECT player_id, device_id
FROM Activity
WHERE (player_id, event_date) IN (
  SELECT player_id, MIN(event_date) FROM Activity GROUP BY player_id
);
Time: O(n) Space: O(players)