📝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 문제 해결 방법
- WHERE절로 2020년에 해당하는 로그인만 필터링
- WHERE year(time_stamp) = '2020' 조건을 사용하여 2020년에 로그인한 기록만 필터링합니다.
- 각 사용자별로 최신 로그인 시점 구하기
- MAX(time_stamp)를 사용하여 각 사용자의 최신 로그인 시점을 구합니다.
- 사용자별로 그룹화
- 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
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 177. Nth Highest Salary (0) | 2025.03.20 |
---|---|
[LeetCode] 1965. Employees With Missing Information (0) | 2025.03.18 |
[LeetCode] 1873. Calculate Special Bonus (0) | 2025.03.17 |
[LeetCode] 1795. Rearrange Products Table (0) | 2025.03.12 |
[LeetCode] 1741. Find Total Time Spent by Each Employee (0) | 2025.03.11 |