문제
어제 기온과 비교해서 기온이 높은 날짜만 id를 출력해보셈
최종쿼리
with temp as(
select *,
lag(temperature) over(order by recordDate) as pre_tem,
lag(recordDate) over(order by recordDate) as pre_date
from weather
)
select id
from temp
where temperature >pre_tem
and datediff(recordDate,pre_date) =1;
쿼리 설명 + 느낀점
어제 기온을 비교하기 위해 어제의 날짜와 어제의 기온 컬럼을 가져와야 하는데 현재 행 기준 이전 행을 가져오는 lag 윈도우 함수가 제일 먼저 떠올랐다. with문과 lag 윈도우 함수를 활용해 가져온 후 메인 쿼리에서 어제의 기온보다 높은 온도의 id와 어제의 날짜는 오늘 날짜와의 차이가 1이기 때문에 where절에 datediff를 활용해 적어주었다.
문제를 보고 pre_tem(어제 온도)를 구하는 lag 함수까지는 쉽게 떠올렸지만, pre_date와 datediff를 활용해 어제의 날짜만을 비교하기 위한 조건을 필터링해주는데 시간이 오래걸렸기 때문에 짚고 넘어가야겠다.
'sql' 카테고리의 다른 글
[Leetcode/SQL] 1280. Students and Examinations (0) | 2024.08.19 |
---|---|
[프로그래머스 SQL]LV.4 식품분류별 가장 비싼 식품의 정보 조회하기 (1) | 2024.07.25 |