SQL/문제풀이
Game Play Analysis IV _ Medium. LeetCode *
데이터분석가 이채은
2025. 1. 2. 21:11
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)
FROM Activity
GROUP BY player_id
);
- WITH를 사용한 단계적 접근:
- 첫 로그인 날짜 계산(FirstLogin)과 첫 로그인 다음 날 확인(NextDayLogin)을 별도 CTE로 분리하면 가독성과 디버깅이 쉬움.
- JOIN을 활용한 비교:
- JOIN을 사용하여 player_id와 첫 로그인 다음 날(DATE_ADD)을 명확히 비교.
- 비율 계산:
- 전체 플레이어 수와 조건 만족 플레이어 수를 각각 계산해 나누는 방식이 더 직관적임.