TIL/SQL
리트코드| 온도 상승(MySQL)
jojoon2786
2024. 8. 22. 13:23
문제
어제 날짜와 비교하여 온도가 더 높은 모든 날짜를 찾는 솔루션을 작성해라.
나의 풀이)
with w1 as (
select id, recordDate, temperature
from Weather),
w2 as (
select id, recordDate, temperature
from Weather)
select w1.id
from w1,w2
where datediff(w1.recordDate, w2.recordDate) = 1 and w1.temperature > w2.temperature
임시테이블로 w1과 w2를 만들어 조건을 부여하여 조회하였다.
튜터님의 풀이)
with temp1 as(
select id, recordDate, temperature , temperature > lag(temperature) over (order by recordDate asc) as temp_higher
from weather)
select id
from temp1
where temp_higher = 1 ;
window function을 사용하여 풀이
lag(temperature) over (order by recordDate asc) as temp_higher
> 현재 행의 temperature 값과 이전 행의 temperature 값을 비교, LAG() 함수는 기본적으로 이전 행의 값을 반환함.
조건 식이므로 결과는 1, 0의 형태로 저장된다.
위의 저장 결과를 본 쿼리에서 temp_higher = 1로 조건을 걸어줌.
