题目内容:
表: Weather
编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。
返回结果 不要求顺序 。
查询结果格式如下例。
示例 1:
我的思路:
要查找与之前(昨天的)日期相比温度更高的所有日期的id。
我直接想到了,把前一天的数据拿到当前行,然后比较一下即可,但是题目中并没有说给出的数据的日期是有序的,所以我想先排序,然后再拿数据;还有一点是没有说时间是连续的,有可能中间跳了日期,所以要把上一行的日期拿到做差等于1。
sql语句如下:
select
id
from
(
select
id,
recordDate,
temperature,
LAG(temperature,1) over() lastTemp,
LAG(recordDate,1) over() lastDate
from
(
select
id,
recordDate,
temperature
from Weather
order by recordDate
)t1
)t2
where t2.lastTemp<t2.temperature AND DATEDIFF(recordDate,lastDate)=1
别的思路:
可以join自己,把第一张表作为主表作为当天的数据,把第二张表作为辅表作为前一天的数据,join条件为两表之间的日期差为1且当天数据比前一天数据要大。