- Write a solution to find all dates' Id with higher temperatures compared to its previous dates (yesterday).
Return the result table in any order.
The result format is in the following example.
SELECT w1.id
FROM weather AS w1
JOIN weather AS w2
ON DATEDIFF(w1.recordDate, w2.recordDate) = 1
WHERE w1.temperature > w2.temperature
① FROM weather AS w1 JOIN weather AS w2
# 1개의 테이블을 JOIN 해준다.
② ON DATEDIFF(w1.recordDate, w2.recordDate) = 1
# 테이블1 의 날짜컬럼에서 테이블2의 날짜컬럼을 뺀 값이 1일 때 JOIN
③ WHERE w1.temperature > w2.temperature
# 테이블1 의 온도가 테이블2의 온도보다 높을 경우
SELECT w1.id
FROM weather w1, weather w2
WHERE datediff(w1.recorddate,w2.recorddate) = 1 AND w1.temperature > w2.temperature
테이블을 CROSS JOIN 으로 만들어준 다음
조건을 주는 방법도 있다
* 복사가 되기 때문에 where 절에서 null 이 나오게 되면 문제가 될 수 있다.
* 처리 속도를 빠르게 하고 싶을 때 가끔 사용하지만 권장하지 않는다.
참고
https://leetcode.com/problems/rising-temperature/description/
'SQL 코드카타' 카테고리의 다른 글
550. Game Play Analysis IV (0) | 2024.05.31 |
---|---|
1661. Average Time of Process per Machine (0) | 2024.05.03 |
상품을 구매한 회원 비율 구하기 (0) | 2024.04.19 |
자동차 대여 기록 별 대여 금액 구하기 (0) | 2024.04.18 |
특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.04.16 |