데이터 공부/SQL

[LeetCode] 550. Game Play Analysis IV (Where절 Subquery)

민몽 2024. 8. 13. 21:21
📖 문제

 

첫 로그인 후, 다음 날도 로그인 한 유저 비율 구하기

1. 모든 유저 수 구하기

2. 첫 로그인 후 다음 날도 로그인한 유저 수 구하기

🔗Link : https://leetcode.com/problems/game-play-analysis-iv/description/

 

👀 What I Learned

   

처음에는 첫 로그인 날짜를 구한 후, 첫 로그인 기준 다음 날짜를 구하려고 했다. 초점을 '다음 날'에 맞추다보니

생각한대로 구현이 잘 안됐다. 결국 솔루션을 참고해서 풀었는데 대부분의 솔루션이

 `(각 event_date에서 하루를 뺀 날짜 = 첫 로그인 날짜)` 이런 로직이 많았다. 

문제에서 이야기하는 그대로 코드를 짜지 말고, 다른 방식으로 바라보아야 풀리는 문제가 많은 것 같다.

그런 시각을 가지려면 많이 풀어보고 다른 사람들 코드도 많이 보는 수 밖에 없는 것 같다 !

 

📖 풀이과정
SELECT ROUND(SUM(consecutive) / COUNT(DISTINCT(player_id)),2) as fraction
FROM(
    SELECT player_id
        , DATEDIFF(event_date, min(event_date) OVER(PARTITION BY player_id)) = 1 as consecutive
    FROM Activity
) as t