꿈은 데이터분석가, 취미는 계획

[MY SQL] 연달아 로그인한 사람의 비율 구하기 본문

SQL/SQL문풀

[MY SQL] 연달아 로그인한 사람의 비율 구하기

data_2080 2025. 1. 15. 18:59
728x90

출처: [leetcode - SQL50] :  550. Game Play Analysis IV

문제:  첫 로그인 이후 다음날 연속해서 로그인한 플레이어의 비율을 계산


WITH절 이용하기

1) player별로 처음으로 접속한 날을 조회하는 WITH절 생성

2) 첫접속일 WIHT절과 player_id가 같고, 접속일이 +1일 때 JOIN하는 WITH절 생성

3) 원본 df과 2번 df을 LEFT로 JOIN(연속 접속하지 않은 사용자도 포함되도록),

2번 df의 player_id수 / 원본 df의 player_id의 수로 비율 구하기

WITH FirstLogin AS (
    SELECT
        player_id,
        MIN(event_date) AS first_login_date
    FROM
        Activity
    GROUP BY
        player_id
),
NextDayLogin AS (
    SELECT
        f.player_id,
        f.first_login_date,
        a.event_date AS next_day
    FROM
        FirstLogin f
    JOIN
        Activity a
    ON
        f.player_id = a.player_id
        AND a.event_date = DATE_ADD(f.first_login_date, INTERVAL 1 DAY)
)
SELECT
    ROUND(COUNT(DISTINCT NextDayLogin.player_id) / COUNT(DISTINCT FirstLogin.player_id), 2) AS fraction
FROM
    FirstLogin
LEFT JOIN
    NextDayLogin
ON
    FirstLogin.player_id = NextDayLogin.player_id;
728x90