홍동이의 성장일기
[LeetCode] 550. Game Play Analysis IV 본문
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문 쿼리
1. 최초 로그인한 날 MIN(event_date) 과 다음 로그인 한 날이 연속으로 있는지를 알아보기 두 날짜의 차이가 1인 행을 찾아야한다. (DATEDIFF)
2. player_id별로 로그인 여부를 파악해야 하므로 PARTITION BY를 사용해준다. (GROUP BY를 해버리면 최초 또는 최대의 날짜밖에 구하지 못한다)
<쿼리 결과>
결과 쿼리
3. (연속 2일 로그인한 사용자 수 / 전체 사용자 수)를 해주고 반올림해준다.
solution없이 혼자 문제를 풀게되는 그날까지,,🥲
📍본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.
728x90
'Tool > SQL 코딩테스트 풀이' 카테고리의 다른 글
[LeetCode] 1045. Customers Who Bought All Products (0) | 2023.08.16 |
---|---|
[LeetCode] 570. Managers with at Least 5 Direct Reports (0) | 2023.08.15 |
[LeetCode] 262. Trips and Users (0) | 2023.08.14 |
[LeetCode] 184. Department Highest Salary (0) | 2023.08.12 |
[LeetCode] 181. Employees Earning More Than Their Managers (0) | 2023.08.12 |
Comments