-
SQL Schema
Create table If Not Exists Weather (id int, recordDate date, temperature int); Truncate table Weather; insert into Weather (id, recordDate, temperature) values ('1', '2015-01-01', '10'); insert into Weather (id, recordDate, temperature) values ('2', '2015-01-02', '25'); insert into Weather (id, recordDate, temperature) values ('3', '2015-01-03', '20'); insert into Weather (id, recordDate, temperature) values ('4', '2015-01-04', '30');
Table: Weather
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| recordDate | date |
| temperature | int |
+---------------+---------+
id is the primary key for this table.
This table contains information about the temperature on a certain day.
Write an SQL query to find all dates' Id
with higher temperatures compared to its previous dates (yesterday).
Return the result table in any order.
The query result format is in the following example.
Example 1:
Input:
Weather table:
+----+------------+-------------+
| id | recordDate | temperature |
+----+------------+-------------+
| 1 | 2015-01-01 | 10 |
| 2 | 2015-01-02 | 25 |
| 3 | 2015-01-03 | 20 |
| 4 | 2015-01-04 | 30 |
+----+------------+-------------+
Output:
+----+
| id |
+----+
| 2 |
| 4 |
+----+
Explanation:
In 2015-01-02, the temperature was higher than the previous day (10 -> 25).
In 2015-01-04, the temperature was higher than the previous day (20 -> 30).
- 使用DATEDIFF 做同張表的JOIN
-
MySQL
- Runtime: 461 ms, faster than 50.95% of MySQL online submissions for Rising Temperature.
- Memory Usage: 0B, less than 100.00% of MySQL online submissions for Rising Temperature.
SELECT weather.id FROM weather JOIN weather w ON DATEDIFF(weather.recordDate, w.recordDate) = 1 AND weather.Temperature > w.Temperature;
or
- Runtime: 401 ms, faster than 77.11% of MySQL online submissions for Rising Temperature.
- Memory Usage: 0B, less than 100.00% of MySQL online submissions for Rising Temperature.
SELECT w1.id FROM Weather w1, Weather w2 WHERE w1.temperature > w2.temperature AND DATEDIFF(w1.recordDate, w2.recordDate) = 1;