출처: https://leetcode.com/problems/rising-temperature/submissions/1890845928/
내가 한 풀이
# Write your MySQL query statement below
-- 2015년 1월 2일의 기온은 전날보다 높았습니다(10 -> 25).
-- 2015년 1월 4일의 기온은 전날보다 높았습니다(20 -> 30).
SELECT w1.id
FROM Weather w1
JOIN Weather w2 ON DATEDIFF(w1.recordDate, w2.recordDate) = 1
WHERE w1.temperature > w2.temperature;
w1: 오늘 데이터
w2: 어제 데이터 (DATEDIFF를 통해 w1보다 하루 전인 행만 매칭)
WHERE: 오늘의 온도가 어제의 온도보다 높은 경우만 필터링
트러블 슈팅
일단 LEAD 함수 등을 생각해봤지만.
자체조인을 하여 이전 날짜와 비교하는게 제일 좋은 방법이었다.
그외에 풀이
SELECT id
FROM (
SELECT
id,
recordDate,
temperature,
-- 이전 행의 날짜를 가져옴
LAG(recordDate) OVER (ORDER BY recordDate) AS prev_date,
-- 이전 행의 온도를 가져옴
LAG(temperature) OVER (ORDER BY recordDate) AS prev_temp
FROM Weather
) temp_table
WHERE temperature > prev_temp
AND DATEDIFF(recordDate, prev_date) = 1; -- 반드시 하루 차이인지 확인!