홍동이의 성장일기

[LeetCode] 511. Game Play Analysis I 본문

Tool/SQL 코딩테스트 풀이

[LeetCode] 511. Game Play Analysis I

홍동2 2023. 8. 22. 17:06

 

Game Play Analysis I - LeetCode

Can you solve this real interview question? Game Play Analysis I - Table: Activity +--------------+---------+ | Column Name | Type | +--------------+---------+ | player_id | int | | device_id | int | | event_date | date | | games_played | int | +----------

leetcode.com

[풀이 1]

SELECT player_id
        , MIN(event_date) AS first_login
FROM activity
GROUP BY player_id

 

[풀이 2] 윈도우 함수 사용

SELECT player_id
        , first_login
FROM (
        SELECT player_id
                , event_date AS first_login
                , ROW_NUMBER() OVER (PARTITION BY player_id ORDER BY event_date) AS login_num
        FROM activity
) AS log_rank
WHERE login_num = 1

 

💡 문제 풀이

 

[풀이 1] player_id 별로 (GROUP BY) event_date의 최소값인 날(MIN)이 첫번째 로그인 날짜입니다.

 

[풀이 2] 

1. player_id별로 (PARTITION BY) event_date의 순위를 구해줍니다. (ORDER BY)

sELECT player_id
        , event_date AS first_login
        , ROW_NUMBER() OVER (PARTITION BY player_id ORDER BY event_date) AS login_num
FROM activity

 

2. 위 식을 서브쿼리 안에 넣어준 후, login_num이 1인 (가장 빠른)행의 player_id와 first_login 날짜를 불러와줍니다.

 


📍본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.

728x90
Comments