-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgame_play_analysis_II.sql
More file actions
60 lines (55 loc) · 1.11 KB
/
game_play_analysis_II.sql
File metadata and controls
60 lines (55 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
CREATE TABLE Activity_II (
player_id INT,
device_id INT,
event_date DATE,
games_played INT
);
INSERT INTO Activity_II (player_id, device_id, event_date, games_played) VALUES
(1, 2, '2016-03-01', 5),
(1, 2, '2016-05-02', 6),
(2, 3, '2017-06-25', 1),
(3, 1, '2016-03-02', 0),
(3, 4, '2018-07-03', 5);
-- using subquery
SELECT
A1.player_id,
A1.device_id
FROM
Activity_II A1
WHERE
(A1.player_id, A1.event_date) IN (
SELECT
A1.player_id,
MIN(A1.event_date)
FROM
Activity_II A1
GROUP BY
A1.player_id
);
-- using CTE
WITH Min_Data AS (
SELECT
player_id,
MIN(event_date) AS event_date
FROM
Activity_II
GROUP BY
player_id
)
SELECT Activity_II.player_id, Activity_II.device_id FROM
Min_Data INNER JOIN Activity_II
ON Min_Data.event_date = Activity_II.event_date
-- using Window function
SELECT player_id, device_id
FROM (
SELECT
player_id,
device_id,
MIN(event_date) AS event_date,
ROW_NUMBER() OVER (
PARTITION BY player_id
ORDER BY MIN(event_date)
) AS rnk
FROM Activity_II
GROUP BY player_id, device_id )d
WHERE rnk = 1