https://leetcode.com/problems/game-play-analysis-iv/description/
미뤄뒀던 포스팅을 이제야.... 한 20개 더 밀려있다.
기존의 511. Game Play Analysis I 와 유사한 문제
최초 접속 후, 다음날 다시 접속한 게임플레이어의 비율을 구하면 된다.
Example 1:
Input:
Activity table:
+-----------+-----------+------------+--------------+
| player_id | device_id | event_date | games_played |
+-----------+-----------+------------+--------------+
| 1 | 2 | 2016-03-01 | 5 |
| 1 | 2 | 2016-03-02 | 6 |
| 2 | 3 | 2017-06-25 | 1 |
| 3 | 1 | 2016-03-02 | 0 |
| 3 | 4 | 2018-07-03 | 5 |
+-----------+-----------+------------+--------------+
Output:
+-----------+
| fraction |
+-----------+
| 0.33 |
+-----------+
Explanation:
Only the player with id 1 logged back in after the first day he had logged in so the answer is 1/3 = 0.33
SELECT ROUND(COUNT(DISTINCT player_id) / (SELECT COUNT(DISTINCT player_id) FROM Activity), 2) AS fraction
FROM Activity
WHERE (player_id, DATE_SUB(event_date, INTERVAL 1 DAY))
IN (SELECT player_id
, MIN(event_date) AS first_login
FROM Activity
GROUP BY player_id)
idea
1. WHERE문의 IN 속에, player_id 별 최초접속일을 모아둔다.
2. event_date에서 하루를 뺀 값이 IN 값에 들어 있는 최초접속일과 일치하는 player_id를 찾도록 WHERE문 조건을 최종 작성한다(최초 접속 후 다음날 접속한 기록이 있다면, 해당 접속 일자에서 -1을 빼면 최초접속일이 될 것이다)
3. WHERE문을 통해 걸러진 플레이어 수/전체 플레이어 수
'sql > easy' 카테고리의 다른 글
1251. Average Selling Price (0) | 2024.06.03 |
---|---|
1341. Movie Rating (0) | 2024.05.31 |
511. Game Play Analysis I (0) | 2024.03.30 |
1321. Restaurant Growth (0) | 2024.01.15 |
180. Consecutive Numbers (0) | 2024.01.15 |