문제 )
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.
처음 로그인한 다음날 다시 로그인한 플레이어의 비율을 소수점 이하 2자리로 반올림하여 보고하는 솔루션을 작성합니다. 즉, 처음 로그인한 날부터 이틀 이상 연속으로 로그인한 플레이어의 수를 세고, 그 수를 전체 플레이어의 수로 나누어야 합니다. => 로그인한 첫날로부터 최소 이틀 연속 접속한 이들의 비율을 구하시오.
답)
WITH cte_login AS(
SELECT player_id
, DATEDIFF(event_date, MIN(event_date) OVER(PARTITION BY player_id)) = 1 as login
FROM activity
)
SELECT ROUND(SUM(login) / COUNT(DISTINCT player_id), 2) as fraction
FROM cte_login
어후 너무 어렵다 ㅠㅠ with 구절 사용도 어렵고, 서브쿼리도 어렵다!!
서브쿼리와 WITH 구문에 대한 개념과 이해가 많이 떨어지는듯?? 대충 어떻게 풀어야하는지는 알겠으나 그것을 이제 코드적으로 해석하고 풀어내는게 아직은 많이 어렵다 ㅠㅠ
요 문제는 꽤나 오래 걸려서 구글링으로 넘어갔고, 다시 풀어볼 것!!
📍본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.
'[코딩 테스트] > SQL 코딩 테스트' 카테고리의 다른 글
[프로그래머스 SQL] 조건에 맞는 사용자 정보 조회하기 (1) | 2024.10.04 |
---|---|
[프로그래머스 SQL] 식품분류별 가장 비싼 식품의 정보 조회하기 (1) | 2024.09.30 |
[프로그래머스 SQL] 있었는데요 없었습니다 (1) | 2024.09.28 |
[프로그래머스 SQL] 물고기 종류별 대어 찾기 (3) | 2024.09.27 |
[LeetCode] 262. Trips and Users (1) | 2024.02.16 |
댓글