코딩테스트/SQL 문제풀이

[SQL] 197. Rising Temperature

지과쌤 2023. 1. 14.
반응형

목차

    문제

    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).

    스키마

    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')

    아이디어

    날짜 내장함수를 사용하여, 조인을 할때 하루 전날 날짜와 조인한다.

    이후 온도를 비교하여 결과집합을 만든다.

    풀이

    --MSSQL
    
    /* Write your T-SQL query statement below */
    
    --날짜 관련 내장함수 사용
    
    select b.id
        from weather as a
            inner join weather as b
                on b.recordDate = dateadd(DAY, 1, a.recordDate)
            where b.temperature > a.temperature
    반응형

    댓글

    💲 추천 글