[코드카타] SQL 37 Game Play Analysis IV

Data_Student·7일 전
0

코드카타

목록 보기
46/57

[코드카타] SQL 37 Game Play Analysis IV

37. Game Play Analysis IV
https://leetcode.com/problems/game-play-analysis-iv/

Write a solution to report the fraction of players that logged in again 
on the day after the day they first logged in, rounded to 2 decimal places. 
In other words, you need to count the number of players that logged in 
for at least two consecutive days starting from their first login date, 
then divide that number by the total number of players.
with temp as (
    select player_id, min(event_date) min_date
    from Activity
    group by player_id
)
select round(count(distinct t.player_id)/count(distinct a.player_id),2) fraction
from Activity a left join temp t 
on a.player_id=t.player_id and datediff(event_date, min_date) = 1
쿼리문은 생각보다 단순하지만 많은 시간이 걸린 문제..!
오래 걸린 이유.. : 문제의 조건을 일부 놓쳤기 때문..
fraction으로 표현하는데 유저의 최초 로그인과 그 다음 로그인의 기록을 사용해야하는데
'처음' 로그인에 대한 내용을 잊고 있어서 결과 도출에 어려움이 있었음
Min() 함수를 사용하기 전 조건들은 대부분은 비슷하나 Min() 함수의 차이 여부로 결과값이 달라짐.
즉, 하나의 함수나 표현 차이로 결과값이 달라질 수 있으니 처음 조건을 잘 보고(또는 설정하여) 
누락되는 일 없이 단계적으로 문제를 해결하자..!!

0개의 댓글