- Rising Temperature
Given a Weather table, write a SQL query to find all dates’ Ids with higher temperature compared to its previous (yesterday’s) dates.
+———+————+——————+
| Id(INT) | Date(DATE) | Temperature(INT) |
+———+————+——————+
| 1 | 2015-01-01 | 10 |
| 2 | 2015-01-02 | 25 |
| 3 | 2015-01-03 | 20 |
| 4 | 2015-01-04 | 30 |
+———+————+——————+
For example, return the following Ids for the above Weather table:
+—-+
| Id |
+—-+
| 2 |
| 4 |
+—-+
Answer:
SELECT w1.Id FROM Weather w1, Weather w2
WHERE TO_DAYS(w1.Date) = TO_DAYS(w2.Date)+1 AND w1.Temperature > w2.Temperature
SELECT w1.Id FROM Weather w1 INNER JOIN Weather w2 ON
TO_DAYS(w1.Date) = TO_DAYS(w2.Date) + 1 AND w1.Temperature > w2.Temperature
SELECT w1.Id FROM Weather w1 JOIN Weather w2 ON
DATEDIFF(w1.Date, w2.Date) = 1 AND w1.Temperature > w2.Temperature
DATEDIFF
DATEDIFF(date1,date2)
date1 和 date2 参数是合法的日期或日期/时间表达式。
只有值的日期部分参与计算。
SELECT DATEDIFF(‘2008-12-30’,’2008-12-29’) AS DiffDate
结果:
DiffDate: 1
SELECT DATEDIFF(‘2008-12-29’,’2008-12-30’) AS DiffDate
结果:
DiffDate: -1