Skip to content

Latest commit

 

History

History
100 lines (74 loc) · 2.42 KB

197.Rising-Temperature.md

File metadata and controls

100 lines (74 loc) · 2.42 KB

197. Rising Temperature

題目


  • 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

Code


  • 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;

Reference