[LeetCode/MySQL]511. Game Play Analysis I

2025. 5. 4. 21:12·코딩테스트/LeetCode

문제

Game Play Analysis I

각 플레이어의 첫 로그인 날짜를 구하는 문제였다.

문제 풀이

MIN 사용한 풀이

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

JOIN 사용한 풀이

SELECT a1.player_id, a1.event_date AS first_login
FROM Activity a1
LEFT JOIN Activity a2
ON a1.player_id=a2.player_id AND a1.event_date>a2.event_date
WHERE a2.player_id IS NULL;
/* ON 조건에 해당하지 않은 a2는 모두 NULL이기 때문에 
꼭 player_id가 아닌 a2의 컬럼 중 하나여도 된다. */
a1.player_id a1.event_date a2.event_date 설명
1 2016-03-01 NULL 최솟값
1 2016-05-02 2016-03-01 제거됨
2 2017-06-25 NULL 최솟값
3 2016-03-02 NULL 최솟값
3 2018-07-03 2016-03-02 제거됨

여기서 LEFT JOIN이 아닌 INNER JOIN을 쓴다면 ON 조건을 만족하는 행만 결과에 남긴다. 그러면 a2.event_date=NULL인 행은 조건 불일치로 결과에 포함되지 않고 결국 NULL이 있던 최솟값인 행들 자체가 사라져버린다.

'코딩테스트 > LeetCode' 카테고리의 다른 글

[LeetCode/MySQL]607. Sales Person  (0) 2025.05.10
[LeetCode/MySQL]577. Employee Bonus  (0) 2025.05.09
[LeetCode/MySQL]197. Rising Temperature  (0) 2025.05.04
[LeetCode/MySQL]196. Delete Duplicate Emails  (0) 2025.05.04
[LeetCode/MySQL]183. Customers Who Never Order  (0) 2025.05.04
'코딩테스트/LeetCode' 카테고리의 다른 글
  • [LeetCode/MySQL]607. Sales Person
  • [LeetCode/MySQL]577. Employee Bonus
  • [LeetCode/MySQL]197. Rising Temperature
  • [LeetCode/MySQL]196. Delete Duplicate Emails
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[LeetCode/MySQL]511. Game Play Analysis I
상단으로

티스토리툴바