[SQL] 리트코드 550.Game Play Analysis IV

건너별·2025년 3월 21일
0

SQL

목록 보기
16/16

문제 및 정답 링크

  • 처음 접속한 날의 다음 날에도 접속한 유저의 비율을 반환하는 문제.

📌Solution

SELECT ROUND(COUNT(a3.player_id) 
    / (SELECT COUNT(DISTINCT a2.player_id) from Activity a2),2) AS fraction
from Activity a3
    WHERE (a3.player_id, DATE_SUB(a3.event_date, INTERVAL 1 DAY)) IN (SELECT a1.player_id, MIN(a1.event_date) from Activity a1 GROUP BY a1.player_id)

📌Point

  • 이틀 연속이 아니라 처음 접속한 날 기준이라는 것이 중요. 헷갈리면 안됨!
  • DATE_SUB, DATE_ADD 함수 용법을 이해하고, 서브쿼리(또는 JOIN으로 풀수도 있을듯)로 첫날(player 별 DATE의 최솟값)(date-1day) 로 다시 집계한 테이블과의 교집합을 보는 것이 핵심.

JOIN으로도 풀어볼까

  • 했지만 CTE라는 투머치 개념인 것 같아 다음에 TODO로 남겨둠.
profile
romantic ai developer

0개의 댓글