[SQL刷题]LeetCode:512. 游戏玩家分析Ⅱ

1,244 阅读1分钟

写在前面

题目

Activity table:

image.png

Result table:

image.png

题目是:Write a SQL query that reports the device that is first logged in for each player 翻译一下就是写一条sql,显示每个玩家首次登录的设备号(同时显示玩家ID)

思路

如果做过题1,那这道题就简单一些了。我们可以先求出每次玩家首次登录的信息。

SELECT player_id,MIN(event_date)
FROM activity
GROUP BY player_id

有了这个信息,我们可以根据它们找到指定id、指定时间的设备id信息。 但此处可能有很多方法:

方法1,用in来做

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)

image.png

方法2,用表关联来做


SELECT a.player_id,a.device_id
FROM activity AS a,
(
SELECT player_id,MIN(event_date) AS mindate
FROM activity
GROUP BY player_id) AS b
WHERE a.`event_date`=b.mindate 
AND a.`player_id`=b.player_id