https://leetcode.com/problems/game-play-analysis-iv/description/
문제:
"로그인 로그 데이터를 보고 첫 접속에 이어 다음 날에도 연달아 접속한 ID의 fraction을 구하여라"
*fraction = 비율

논리 흐름:
1. 처음 접속한 id와 date를 구한다.
2. 처음 접속한 date에 하루를 더하고 해당 날짜가 존재하는 id만 필터링한다. JOIN
3. 처음 접속한 id의 갯수(COUNT)와 연달아 접속한 id의 갯수(COUNT)를 통해 fraction을 계산한다.
방법:
1. GROUP BY id, MIN(date)를 통해 첫 접속 날짜와 아이디를 구한다. → CTE로 저장
2. 1번에서 구한 CTE와 원본 DB를 SELFJOIN을 통하여 합치고 AND조건과 DATE_ADD(date, INTERVAL 1 DAY)를 통해 필터링한다.
3. 1번에서 구한 데이터와 2번에서 구한 데이터를 LEFT JOIN으로 합치고 COUNT를 사용해서 비율을 구한다.
정답쿼리:
WITH FirstLogin AS(
SELECT player_id, MIN(event_date) AS first_login
FROM Activity
GROUP BY player_id
),
LoginNextDay AS(
SELECT a.player_id
FROM Activity a JOIN FirstLogin f
ON a.player_id = f.player_id
AND a.event_date = DATE_ADD(f.first_login, INTERVAL 1 DAY)
) # id which have conse
SELECT ROUND(COUNT(l.player_id)/COUNT(f.player_id),2) AS fraction
FROM FirstLogin f LEFT JOIN LoginNextDay l
ON f.player_id = l.player_id
DAEA_ADD(date, INTERVAL) 말고 새로울 것은 없다.