1.데일리루틴(SQL)
https://leetcode.com/problems/rising-temperature/
직전 날짜의 기온보다 올라갔다면 해당 레코드를 반환하는 문제이다.
1)해답
WITH lt AS (
SELECT
id,
temperature,
recordDate,
LAG(temperature, 1, null) OVER(ORDER BY recordDate) AS lastTemperature,
LAG(recordDate, 1, null) OVER(ORDER BY recordDate) AS lastDate
FROM
Weather)
SELECT
id
FROM
lt
WHERE
temperature > lastTemperature
AND DATE_SUB(recordDate, INTERVAL 1 DAY) = lastDate
2) 윈도우 함수 - LAG()
- LAG(temperature, 1, null) OVER(ORDER BY recordDate) AS lastTemperature:
- LAG() 함수는 현재 행 기준으로 이전 행의 값을 가져옵니다.
- 1은 몇 행 전의 값을 가져올지 지정하며, null은 앞에 행이 없을 때 반환할 기본값입니다.
- OVER(ORDER BY recordDate)는 recordDate를 기준으로 정렬한 뒤 윈도우 함수를 적용합니다.
- 결과는 이전 날짜의 temperature를 lastTemperature로 가져옵니다.
- LAG(recordDate, 1, null) OVER(ORDER BY recordDate) AS lastDate:
- 이전 행의 recordDate를 lastDate로 가져옵니다.
3) DATE_SUB() 함수
- DATE_SUB(recordDate, INTERVAL 1 DAY):
- recordDate에서 1일을 빼는 함수입니다.
- 날짜 계산을 위해 사용됩니다.
'(2024-10) 스파르타 내일배움캠프 - 백엔드 > TIL' 카테고리의 다른 글
(2025-01-27) 트러블슈팅 (0) | 2025.01.27 |
---|---|
(2024-12-19) 트러블슈팅 (0) | 2024.12.19 |
(2024-12-16) TIL (0) | 2024.12.16 |
(2024-12-03) TIL, 메모 과제 구조 이해하기 (추가중) (0) | 2024.12.03 |
(2024-12-02) TIL (1) | 2024.12.02 |