출처: https://leetcode.com/problems/game-play-analysis-i/submissions/1890829196/
테이블:Activity
+--------------+---------+
| 열 이름 | 유형 |
+--------------+---------+
| player_id | int |
| device_id | int |
| event_date | date |
| games_played | int |
+--------------+---------+
(player_id, event_date)는 이 테이블의 기본 키(고유 값을 가진 열들의 조합)입니다.
이 테이블은 일부 게임 플레이어의 활동을 보여줍니다.
각 행은 특정 날짜에 특정 기기를 사용하여 로그인하고 로그아웃하기 전에 일정 수(0개일 수도 있음)의 게임을 플레이한 플레이어의 기록입니다 .
각 플레이어의 첫 로그인 날짜를 찾는 솔루션을 작성하세요 .
결과 테이블을 어떤 순서 로든 반환합니다 .
결과 형식은 다음 예시와 같습니다.
예시 1:
입력:
활동 테이블:
+-----------+-----------+------------+--------------+
| 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 |
+-----------+-------------+
내가 한 풀이
# Write your MySQL query statement below
# 서브 쿼리 사용 해보기
-- 실제로 보고 싶은 데이터 = 외부 쿼리
-- 구해야 할 데이터 = 서브쿼리
SELECT sb.player_id, sb.first_login
FROM(
SELECT player_id, MIN(event_date) AS first_login # 서브쿼리 안에서 정의하기
FROM Activity
GROUP BY player_id
) sb
트러블 슈팅
우선, first_login이라는 별칭 컬럼을 서브쿼리 내에서 정의 하고,
제일 첫 로그인 날짜니 MIN 함수를 써야하며, 그룹바이 절에서 선언 할 필요또한 없어짐