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 |
+----+
解题思路
日期函数DATEDIFF(date1, date2)
,返回两个日期之间的天数。
datediff(a.Date, b.Date) = 1
,即可表示相差一天。
实现代码
#方法1
select a.Id
from Weather a
inner join Weather b
on datediff(a.RecordDate, b.RecordDate) = 1
where a.Temperature > b.Temperature;
#方法2
select Id
from Weather a
where Temperature >(select Temperature from Weather b where datediff(a.Date, b.Date) = 1);