一、题目信息
给出了一张Weather表,有
id(主键),
recordDate(报道日期),
temperature(温度)
三个字段
二、题目要求实现效果
找出相比昨天温度更高的日期对应的id
三、示例
1、1-2日的温度是25度,比昨天1-1日的10度高,符合要求,应该输出id 2
2、1-3日的温度是20,比1-2日的20度低,不输出
3、1-4日的温度是30度,比1-3日的20度高,符合要求,输出id 4
4、相对于1-1日而言,没有比它前面一天的日期数据,也不做输出
四、分析
1、我们先看一下用weather表笛卡尔积自身的数据
weather t1 inner join weather t2
内关联不加限制条件就相当于笛卡尔积(第一个表里面的行都会跟第二个表中的每一行组合)
2、从上面的数据我们需要的其实就是标红色的
这些数据的特点就是
t1.recordDate 和 t2.recordDa相差一天,t1相当于昨天的,
①diffdate(t2.recordDate.t1.recordDate) =1
②t1.temperature < t2.temperature
③取t2的id,即温度比昨天高的id
加上这两个限制条件后,数据就只会留下标红底的两行数据
五、sql实现
select
t2.id
from Weather t1 inner join Weather t2
on datediff(t2.recordDate,t1.recordDate) = 1 and t1.temperature < t2.temperature