
문제
https://leetcode.com/problems/rising-temperature/description/
문제 설명
- 어제보다 기온이 높았던 날짜의 id 구하기
정답 코드
SELECT w1.id
FROM weather w1 JOIN weather w2 ON DATEDIFF(w1.recordDate, w2.recordDate) = 1
WHERE w1.temperature > w2.temperature
- 날짜끼리 뺄셈을 해서 비교 → 데이터베이스가 모든 날짜를 다 계산해봐야 함 → 느릴 수 있음
코드 설명
- 같은 테이블을 두 번 사용해 자기 자신과 조인
- w1은 오늘 날짜, w2는 어제 날짜
- 두 날짜의 차이를 계산해서, 딱 1일 차이일 때만 연결
- 즉, w1의 날짜가 w2보다 하루 뒤인 경우만 매칭
- 오늘(w1)의 온도가 어제(w2)보다 더 높은 경우만 필터링
개선된 코드
SELECT w1.id
FROM weather w1 JOIN weather w2 ON w1.recordDate = DATE_ADD(w2.recordDate, INTERVAL 1 DAY)
WHERE w1.temperature > w2.temperature
- w1의 날짜가 w2의 날짜보다 하루 뒤인지를 비교 → 계산이 덜 들어가고, 빠를 수 있음



'코딩 테스트 연습 > [프로그래머스][리트코드] MySQL' 카테고리의 다른 글
| 577. Employee Bonus (0) | 2025.08.26 |
|---|---|
| 1661. Average Time of Process per Machine ⭐️ (3) | 2025.08.25 |
| 1581. Customer Who Visited but Did Not Make Any Transactions (0) | 2025.08.19 |
| 1068. Product Sales Analysis I (1) | 2025.08.15 |
| 1378. Replace Employee ID With The Unique Identifier (1) | 2025.08.13 |