OkBublewrap

상승하는온도 본문

개발/SQL

상승하는온도

옥뽁뽁 2025. 1. 16. 09:35

상승하는온도

문제

  1. 이전 날짜(어제_보다 온더 가 높은 모든 날짜 구하기
  2. id 출력

입력 테이블

  1. Weather
    • id
    • recordDate
    • temperature

풀이

1. 전 날 온도 가져오기, 전날 차이 가져오기

select *,
    (lag(temperature) over (order by recordDate asc)) as lag_temp,
    abs(datediff(recordDate, lag(recordDate) over (order by recordDate))) as date_diff
from weather

2. 조건절 사용

전날 현재 날짜 차이가 1 이고, 현재 온도가 높은 날 찾기

select a.id
from
(
    select *,
        (lag(temperature) over (order by recordDate asc)) as lag_temp,
        datediff(recordDate, lag(recordDate) over (order by recordDate asc)) as date_diff
    from weather
) a
where a.temperature > a.lag_temp and date_diff = 1