리뷰
공부한 것
- Lag() - 이전 행 값을 가져온다
LAG(값을 추출할 컬럼, 행 간격, default) OVER (PARTITION BY partition_col ORDER BY 기준 컬럼)
- DATE_SUB() - 날짜, 시간 뺄셈
date_sub(날짜, interval 간격 day)
date_sub(시간, interval 간격 hour)
-- <-> date_add() 날짜, 시간 덧셈
- Every derived table must have its own alias
서브쿼리 테이블을 만든 후 이름을 붙여야 한다.
(서브쿼리 결과를 바로 사용하는 경우에는 별칭을 붙이지 않아도 되지만, 서브쿼리 결과를 후속 작업에서 참조하려는 경우에는 별칭이 필요할 수 있습니다.)
- Unknown column 'temperature' in 'where clause'
where절이 from절의 서브쿼리 테이블을 기반으로 하기 때문에 필요한 속성(필드)를 서브쿼리 테이블에도 추가해야한다.
문제
Table: Weather
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| recordDate | date |
| temperature | int |
+---------------+---------+
id is the column with unique values for this table.
There are no different rows with the same recordDate.
This table contains information about the temperature on a certain day.
Write a solution to find all dates' Id with higher temperatures compared to its previous dates (yesterday).
Return the result table in any order.
The 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).
내 답안
select id
from (select id, temperature, recordDate, lag(recordDate) over(order by recordDate) as lagday,
lag(temperature) over(order by recordDate) as lagTemperature,
date_sub(recordDate, interval 1 day) as yesterday from Weather) as newTable
where temperature > lagTemperature and lagday = yesterday
'ALGORITHM' 카테고리의 다른 글
leetcode 1517 Find Users With Valid E-Mails [MYSQL] (0) | 2024.05.20 |
---|---|
leetcode 1731 The Number of Employees Which Report to Each Employee [MYSQL] (0) | 2024.05.10 |
백준 20920 영단어 암기는 괴로워 [JAVA] (0) | 2024.03.19 |
백준 1010 다리놓기 [JAVA] (0) | 2024.03.11 |
백준 11659 누적합 [JAVA] (0) | 2024.02.09 |