LeetCode力扣刷题数据库(197):上升的温度

题目

给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。
LeetCode力扣刷题数据库(197):上升的温度_第1张图片
例如,根据上述给定的 Weather 表格,返回如下 Id:

LeetCode力扣刷题数据库(197):上升的温度_第2张图片

解析

方法:使用 JOIN 和 DATEDIFF() 子句
算法

MySQL 使用 DATEDIFF 来比较两个日期类型的值。

因此,我们可以通过将 weather 与自身相结合,并使用 DATEDIFF() 函数。

MySQL

SELECT
    weather.id AS 'Id'
FROM
    weather
        JOIN
    weather w ON DATEDIFF(weather.date, w.date) = 1
        AND weather.Temperature > w.Temperature
;

LeetCode力扣刷题数据库(197):上升的温度_第3张图片
LeetCode力扣刷题数据库(197):上升的温度_第4张图片
LeetCode力扣刷题数据库(197):上升的温度_第5张图片

答案

SELECT
    weather.id AS 'Id'
FROM
    weather
        JOIN
    weather w ON DATEDIFF(weather.recorddate, w.recorddate) = 1
        AND weather.Temperature > w.Temperature
;

你可能感兴趣的:(【力扣面试刷题】,mysql,sql,数据库,leetcode,java)