📝 511. Game Play Analysis 1
🔹 게임 플레이 분석 1
각 플레이어의 첫 번째 로그인 날짜를 찾는 솔루션을 작성하세요.
어떤 순서로든 결과 테이블을 반환합니다.
📝 문제 설명
LeetCode 511번 Game Play Analysis I 문제는 각 플레이어의 첫 번째 로그인 날짜를 찾는 SQL 쿼리를 작성하는 문제입니다.
즉, Activity 테이블에서 같은 player_id를 가진 여러 개의 기록 중 가장 빠른 event_date를 찾아야 합니다. 이를 위해 집계 함수(Aggregate Function)와 그룹화(Group By)를 활용하면 해결할 수 있습니다.
📊 테이블 구조
Activity 테이블
Column Name | Type |
player_id | int |
device_id | int |
event_date | date |
games_payed | int |
💡 SQL 문제 해결 방법
이 문제는 GROUP BY와 MIN() 함수를 활용하여 해결할 수 있습니다. player_id별로 그룹화한 후, 각 플레이어의 최초 event_date를 찾으면 됩니다.
728x90
🖥️ SQL 풀이
SELECT player_id
, MIN(event_date) AS first_login
FROM Activity
GROUP BY player_id
🔍 쿼리 분석
- GROUP BY player_id : 같은 player_id를 가진 데이터를 그룹화하여 각 플레이어별로 분석할 수 있도록 합니다.
- MIN(event_date) : 그룹화된 데이터에서 가장 빠른 event_date를 찾아 first_login으로 반환합니다.
- 출력 컬럼 : 각 플레이어의 고유 ID(player_id)와 첫 번째 로그인 날짜(first_login)
📌 실행 예제
Activity 테이블
player_id | device_id | event_date | games_played |
1 | 2 | 2016-03-01 | 5 |
1 | 2 | 2016-05-02 | 6 |
2 | 3 | 2017-06-25 | 1 |
3 | 1 | 2016-03-02 | 0 |
3 | 4 | 2018-07-03 | 5 |
쿼리 실행 결과
player_id | first_login |
1 | 2016-03-01 |
2 | 2017-06-25 |
3 | 2016-03-02 |
🎯 결론
이 문제를 통해 GROUP BY와 MIN() 함수를 활용하여 특정 그룹 내 최소값을 찾는 방법을 배울 수 있습니다.
실무에서도 사용자의 첫 로그인 날짜, 최초 구매일, 최초 활동 날짜 분석 등 다양한 데이터 분석에서 활용할 수 있습니다.🚀
더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀
728x90
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 586. Customer Placing the Largest Number of Orders (2) | 2025.02.28 |
---|---|
[LeetCode] 577. Employee Bonus (0) | 2025.02.27 |
[LeetCode] 183. Customers Who Never Order (0) | 2025.02.25 |
[LeetCode] 182. Duplicate Emails (0) | 2025.02.24 |
[LeetCode] 181. Employees Earning More Than Their Managers (0) | 2025.02.24 |