给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。
+---------+------------------+------------------+ | Id(INT) | RecordDate(DATE) | Temperature(INT) | +---------+------------------+------------------+ | 1 | 2015-01-01 | 10 | | 2 | 2015-01-02 | 25 | | 3 | 2015-01-03 | 20 | | 4 | 2015-01-04 | 30 | +---------+------------------+------------------+
例如,根据上述给定的 Weather 表格,返回如下 Id:
+----+ | Id | +----+ | 2 | | 4 | +----+
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rising-temperature
解题思路:根据条件可知道,输出结果为今天的温度比昨天温度要高的记录。所以条件有两个,找出今天和昨天,再比较其温度。使用datediff()函数可以返回两个日期之间的天数。此题考查的点可能也就是这个。但要注意不要把两个日期写反了,因为其返回值不是一样的。
DATEDIFF('2008-12-30','2008-12-29') 返回值为 1
DATEDIFF('2008-12-29','2008-12-30') 返回值为 -1
注意:表名起别名的时候可以省略as。即 Weather as a 可写作 Weather a。下面的SQL语句中,a代表的是昨天,b代表的是今天。
SQL语句:
select b.Id from Weather a,Weather b
where datediff(b.RecordDate,a.RecordDate)=1 and b.Temperature>a.Temperature