728x90
문제
https://leetcode.com/problems/rising-temperature/description/?envType=study-plan-v2&envId=top-sql-50
- 전 날(어제)의 기온에 비해 오늘의 기온이 더 높은 날의 id 찾기
테이블
Weather | id | recordDate | temperature |
1 | 2025-01-01 | 10 | |
2 | 2025-01-02 | 25 | |
3 | 2025-01-03 | 20 | |
4 | 2025-01-04 | 30 |
- 전 날보다 오늘의 기온이 높은 날의 id는 2, 4
풀이과정
▶ DATEDIFF(날짜1, 날짜2) 사용 정답
# 셀프조인과 DATEDIFF
- 어제와 오늘의 기온 비교를 위해 셀프 조인을 해줌
- 조인 조건은 ① recordDate의 날짜가 하루 차이이고, ② 전 날에 비해 기온이 높은 경우에만 조인이 되도록 설정
- DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2
- 두 날짜 차이가 하루 차이가 나야 함.
- 날짜1이 날짜2보다 최근 날짜이면 DATEDIFF값은 1로, 날짜1이 날짜2보다 과거 날짜이면 DATEDIFF값은 -1로 둬야 함.
- cf. TIMESTAMPDIFF (단위, 날짜1, 날짜2)
- 두 날짜 간의 차이를 어떤 단위로 표현할 것인지 설정할 수 있음.
- 단위 예시
- DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2
단위 | |
초 | SECOND |
분 | MINUTE |
시 | HOUR |
일 | DAY |
주 | WEEK |
월 | MONTH |
분기 | QUARTER |
연 | YEAR |
# 정답
- SELECT 문으로 id만 조회해주기
- 셀프 조인, 조인 조건 설정
- DATEDIFF(날짜1, 날짜2) = 1로 설정해줌 (날짜1이 더 최신 날짜)
- 전 날의 기온이 당일의 기온보다 높은 경우만 필터링
1
2
3
|
SELECT w2.id
FROM Weather w1
JOIN Weather w2 ON DATEDIFF(w2.recordDate, w1.recordDate) = 1 AND w1.temperature < w2.temperature
|
cs |
다른 사람 풀이 참고
▶ DATEADD (기준 날짜, INTERVAL) 사용 정답
# 셀프조인과 DATE_ADD
- 어제와 오늘의 기온 비교를 위해 셀프 조인을 해줌
- 조인 조건은 ① recordDate의 날짜가 하루 차이이고, ② 전 날에 비해 기온이 높은 경우에만 조인이 되도록 설정
- DATE_ADD(기준 날짜, INTERVAL) : 기준 날짜에 INTERVAL 단위만큼 더하기
- 두 날짜 차이가 하루 차이가 나야 함.
- DATE_ADD(기준 날짜, INTERVAL 1 DAY)
- cf. DATE_SUB (기준 날짜, INTERVAL)
- 기준 날짜에서 INTERVAL 단위만큼 빼주는 함수
- 여기에서 '단위'는 상단의 TIMESTAMPDIFF 단위 예시 활용 가능
- 두 날짜 차이가 하루 차이가 나야 함.
- DATE_ADD(기준 날짜, INTERVAL) : 기준 날짜에 INTERVAL 단위만큼 더하기
# 정답
- SELECT 문으로 id만 조회해주기
- 셀프 조인, 조인 조건 설정
- DATE_ADD(기준 날짜, INTERVAL 1 DAY)로 설정해줌 (기준 날짜에 하루 더하기)
- 전 날의 기온이 당일의 기온보다 높은 경우만 필터링
1
2
3
4
5
|
SELECT w1.id
FROM Weather w1
JOIN Weather w2
ON w1.recordDate = DATE_ADD(w2.recordDate, INTERVAL 1 DAY)
WHERE w1.temperature > w2.temperature;
|
cs |
728x90
'데이터분석 과정 > SQL' 카테고리의 다른 글
MySQL 리트코드 | Confirmation Rate (AVG 함수 내 조건문 사용법) (0) | 2025.03.27 |
---|---|
MySQL 리트코드 | Average Time of Process per Machine (0) | 2025.03.19 |
SQL | 데이터 정리(없는 데이터, 사용할 수 없는 데이터) (1) | 2024.01.08 |
SQL | 날짜 데이터 포맷, 조건 (1) | 2024.01.08 |
SQL | Pivot Table 만들기 | 실습 문제 (1) | 2024.01.08 |
댓글