Activity
+--------------+---------+
| Column Name | Type |
+--------------+---------+
| player_id | int |
| device_id | int |
| event_date | date |
| games_played | int |
+--------------+---------+
(player_id, event_date)는 이 테이블의 기본 키(고유 값을 가진 열의 조합)입니다.
이 테이블은 일부 게임 플레이어의 활동을 보여줍니다.
각 행은 언젠가 어떤 기기를 사용하여 로그인하여 여러 게임(0일 수도 있음)을 플레이한 후 로그아웃한 플레이어의 기록입니다.
처음 로그인한 날의 다음 날에 다시 로그인한 플레이어의 비율을 소수점 둘째 자리에서 반올림하여 보고하는 솔루션을 작성하세요. 즉, 첫 로그인 날짜부터 최소 이틀 연속 로그인한 플레이어 수를 세고 그 수를 전체 플레이어 수로 나누어야 합니다.
WITH TMP_TB_1 AS ( SELECT player_id , MIN(event_date) AS first_login FROM Activity GROUP BY player_id ), TMP_TB_2 AS ( SELECT A.player_id FROM Activity A JOIN TMP_TB_1 B ON A.player_id = B.player_id AND A.event_date = DATE_ADD(B.first_login, INTERVAL 1 DAY) WHERE B.player_id IS NOT NULL ) SELECT ROUND(COUNT(DISTINCT B.player_id)/COUNT(DISTINCT A.player_id), 2) AS fraction FROM TMP_TB_1 A LEFT JOIN TMP_TB_2 B ON A.player_id = B.player_id ;