197. Rising Temperature

来源:互联网 发布:淘宝店铺同步到手机端 编辑:程序博客网 时间:2024/06/06 13:00

题目:

Weather,找到所有温度比前一天高的日期Id。

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

例,输出结果为:

Id 2 4

解析:

只有一个表weather,因此一张表内部的联系(日期的前后联系),通常处理方法就是做一次表的自连接。
但是这里与以往的连接不同,在于这里的Date需要类似于a.data-1(day)=b.data。即日期的减法(前一天)。因此正确写法如下:

select dayafter.id from weather join weather as dayafter on date_sub(dayafter.date,interval 1 day)=weather.date     and weather.Temperature<dayafter.Temperature

其中date_sub(dayafter.date,interval 1 day)代表了dayafter.date的前一天。将某一天的Id和当天的温度与前一天的温度组成一张表,最后接上后一天比前一天温度高的检索条件就可以了。

原创粉丝点击