197. Rising Temperature

xiaoxiao2021-02-28  114

题目:

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

Id(INT)Date(DATE)Temperature(INT)12015-01-011022015-01-022532015-01-032042015-01-0430

例,输出结果为:

Id24

解析:

只有一个表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和当天的温度与前一天的温度组成一张表,最后接上后一天比前一天温度高的检索条件就可以了。

转载请注明原文地址: https://www.6miu.com/read-82512.html

最新回复(0)