본문 바로가기

[LeetCode] 1890. The Latest Login in 2020

by qwee0328 2025. 3. 18.

📝1890. The Latest Login in 2020

🔹 2020년 최신 로그인

2020년 모든 사용자의 최신 로그인을 보고하는 솔루션을 작성하세요.
2020년에 로그인하지 않은 사용자는 포함하지 마세요.
어떤 순서로든 결과 테이블을 반환합니다.

 

 

📝 문제 설명

The Latest Login in 2020(1890번) 문제는 각 사용자가 2020년에 마지막으로 로그인한 시점을 구하는 문제입니다.
로그인 기록에서 2020년에 로그인한 사용자들만 포함하며, 각 사용자에 대해 2020년의 최신 로그인 시점을 반환해야 합니다.

결과는 어떤 순서로든 반환할 수 있습니다.

 

 

📊 테이블 구조

Logins 테이블

Column Name Type
user_id int
time_stamp datetime

 

 

💡 SQL 문제 해결 방법

  1. WHERE절로 2020년에 해당하는 로그인만 필터링
    • WHERE year(time_stamp) = '2020' 조건을 사용하여 2020년에 로그인한 기록만 필터링합니다.
  2. 각 사용자별로 최신 로그인 시점 구하기
    • MAX(time_stamp)를 사용하여 각 사용자의 최신 로그인 시점을 구합니다.
  3. 사용자별로 그룹화
    • GROUP BY user_id를 사용하여 사용자별로 결과를 그룹화합니다.

 

반응형

 

🖥️ SQL 풀이

  SELECT user_id
       , MAX(time_stamp) AS last_stamp
    FROM Logins
   WHERE YEAR(time_stamp) = '2020'
GROUP BY user_id

 

 

🔍 쿼리 분석

  • WHERE YEAR(time_stamp) = '2020': 2020년에 해당하는 로그인만 필터링합니다. 이 조건을 사용하여 2020년에 로그인한 기록만을 선택합니다.
  • MAX(time_stamp): 각 사용자의 로그인 기록 중에서 최신 시점을 계산합니다. MAX는 가장 최신의 time_stamp를 반환합니다.
  • GROUP BY user_id: user_id별로 데이터를 그룹화하여 각 사용자에 대해 최신 로그인 시간을 계산합니다.

 

📌 실행 예제

📊 입력 데이터

Logins 테이블

user_id time_stamp
6 2020-06-30 15:06:07
6 2021-04-21 14:06:06
6 2019-03-07 00:18:15
8 2020-02-01 05:10:53
8 2020-12-30 00:46:50
2 2020-01-16 02:49:50
2 2019-08-25 07:59:08
14 2019-07-19 09:00:00
14 2021-01-06 11:59:59

 

쿼리 실행 결과

user_id last_stamp
6 2020-06-30 15:06:07
8 2020-12-30 00:46:50
2 2020-01-16 02:49:50

 

  • 6번 사용자는 총 3번 로그인 했지만 2020년에는 한 번만 로그인했으므로 2020년 로그인 기록을 출력합니다.
  • 8번 사용자는 2020년에 총 2번 로그인 했으며 각각 2월과 12월에 로그인했습니다. 가장 최근 결과인 12월 로그인 기록을 출력합니다.
  • 2번 사용자는 총 2번 로그인 했지만 2020년에는 한 번만 로그인했으므로 2020년 로그인 기록을 출력합니다.
  • 14번 사용자는 총 2번 로그인 했지만 2020년에는 로그인하지 않았기 때문에 출력하지 않습니다.

 

🎯 결론

이 문제는 MAX() 함수를 사용하여 각 사용자의 2020년 최신 로그인 시점을 구하는 문제입니다.
GROUP BY를 통해 사용자별로 그룹화하고, WHERE절로 2020년 데이터만 필터링하여 정확한 결과를 얻을 수 있습니다.

 

 


 

 

더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀

728x90
반응형