데이터 분석 기술 블로그

Game Play Analysis IV _ Medium. LeetCode * 본문

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)을 명확히 비교.
  • 비율 계산:
    • 전체 플레이어 수와 조건 만족 플레이어 수를 각각 계산해 나누는 방식이 더 직관적임.