作者:安小辰 | 来源:互联网 | 2024-10-11 10:12
表: Weather+---------------+---------+|ColumnName|Type|+---------------+---------+|id|int||
表: Weather
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| recordDate | date |
| temperature | int |
+---------------+---------+
id 是这个表的主键
该表包含特定日期的温度信息
编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。
返回结果 不要求顺序 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rising-temperature
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Mysql解法:
1.变量解法
select
Id
from
(select w.*,
@curd := w.RecordDate, #当前日期
@curt := w.Temperature, #当前温度
@isH := if(datediff(@curd,@pred) = 1 and @curt > @pret,1,0) as r, #当当前日期比前一个日期大一天时,且当前温度大于昨日温度 为真
@pret := @curt, #赋值昨日 日期
@pred := @curd #赋值昨日温度
#这五个变量赋值顺序很重要 !! 前两个步骤负责赋值今日数据,判断真假 在赋值给昨日
#这样每一行数据进来先判断当日数据是否比昨日温度大 然后将当日数据赋值给昨日的变量
from
Weather w,
(select
@curd := null,
@pred := null,
@curt := 0,
@pret := 0,
@isH := 0
) init
#初始化变量
order by w.RecordDate #order by先于select执行 先排序在查询 确保日期又近到远
) t
where
t.r = 1