myodo.ru
Мудрец
(12806)
2 года назад
Не проверял.
with s as (select date d, temperature t,
lag(temperature) over (order by date)p from weather)
select d,t,p from s where t>p
BonditkaУченик (230)
2 года назад
переделала, заработал код. Спасибо.
SELECT ID FROM
(
select ID, Temperature, LAG(Temperature,1) OVER(ORDER BY ID) AS Lag
from weather
) where Temperature>Lag
Дана таблица:
+----+------------+-------------+
| id | recordDate | Temperature |
+----+------------+-------------+
| 1 | 2021-03-01 | 10 |
| 2 | 2021-03-02 | 25 |
| 3 | 2021-03-03 | 20 |
| 4 | 2021-03-04 | 30 |
+----+------------+-------------+
Вывести ID дат с более высокой температурой по сравнению с предыдущей датой.
Например, для приведенной таблицы должны вернуться следующие строки:
+----+
| id |
+----+
| 2 |
| 4 |
+----+
Есть решение без использования оконных функций:
select w1.id FROM weather w1
cross join weather w2 where w1.recordDate- w2.recordDate=1
and w1.Temperature > w2.Temperature
Помогите решить с использованием оконных функций.