desert_weather
테이블에는 특정 사막에서 매일 기록된 저녁 온도 정보가 저장되어 있습니다. 이 테이블의 date
컬럼에는 날짜 정보가, temperature
컬럼에는 해당 날짜의 저녁 온도 정보가 기록되어 있습니다. 이 데이터를 이용하여 당일의 온도보다 3일 후의 온도가 더 낮은 날을 찾으세요. 결과는 다음 컬럼들을 포함해야 합니다:
today
: 당일의 날짜(date)another_day
: 3일 후의 날짜(date) temp
: 당일의 온도(number)temp_another_day
: 3일 후의 온도(number)CREATE TABLE desert_weather (
date DATE,
temperature FLOAT
);
INSERT INTO desert_weather (date, temperature) VALUES
('2023-01-01', -5.0),
('2023-01-02', -4.0),
('2023-01-03', -6.0),
('2023-01-04', -8.0),
('2023-01-05', -3.0),
('2023-01-06', -7.0),
('2023-01-07', -9.0),
('2023-01-08', -10.0),
('2023-01-09', -11.0);
SELECT
w1.date AS today,
w2.date AS another_day,
w1.temperature AS temp,
w2.temperature AS temp_another_day
FROM
desert_weather w1
JOIN
desert_weather w2 ON DATE(w1.date) = DATE(DATE_ADD(w2.date, INTERVAL -3 DAY))
WHERE
w2.temperature < w1.temperature
ORDER BY
w1.date;
원도우 함수로도 풀 수 있지만, 셀프 조인 관련 공부를 하다가 날짜가 날짜를 참조하는 방법의 문제를 생각해봤다.
desert_weather
테이블을 w1
과 w2
라는 두 개의 별칭으로 사용하여 자기 결합을 수행
DATE(w1.date)
가 DATE(DATE_ADD(w2.date, INTERVAL -3 DAY))
와 같은 경우를 찾는다, w1
의 날짜가 w2
의 날짜보다 3일 전인 경우.
WHERE
절에서 w2.temperature
가 w1.temperature
보다 낮은 경우만 선택