Question

Formatted question description: https://leetcode.ca/all/197.html

Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to its previous (yesterday's) dates.

+---------+------------+------------------+
| 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 |
+---------+------------+------------------+
For example, return the following Ids for the above Weather table:

+----+
| Id |
+----+
|  2 |
|  4 |
+----+

Algorithm

The function Datediff is used to calculate the difference between two dates. Our limitation is that the temperature is high and the date difference is 1.

Or, TO_DAYS https://www.w3schools.com/sql/func_mysql_to_days.asp

Code

SQL

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

--

SElECT w1.id
FROM Weather w1, Weather w2
WHERE w1.Temperature > w2.Temperature
    AND TO_DAYS(w1.RecordDate) - TO_DAYS(w2.RecordDate) = 1 

All Problems

All Solutions