mysql 문제풀이/easy

550. Game Play Analysis IV

gooreumsea 2024. 5. 29. 12:26

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문을 통해 걸러진 플레이어 수/전체 플레이어 수

 

 

'mysql 문제풀이 > 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