[오늘의 문제] Rising Temperature

shlim55·2026년 1월 20일

코딩테스트

목록 보기
223/223

출처: 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; -- 반드시 하루 차이인지 확인!
profile
A Normal Programmer

0개의 댓글