Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Оконные функции SQL

Bonditka Ученик (230), на голосовании 2 года назад
Нужно решить данную задачу с помощью оконных функций!

Дана таблица:

+----+------------+-------------+

| 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

Помогите решить с использованием оконных функций.
Голосование за лучший ответ
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 года назад
нужно с использованием оконных функций
myodo.ru Мудрец (12806) если задаешь вопрос, почитай хотя бы кто такие функции окна. а то смотришь на нее и не видишь. :) а вообще, если тебе лень прочесть по изучаемой функциональности даже базовое описание, вероятно, изучать программирование - плохая идея.
BonditkaУченик (230) 2 года назад
переделала, заработал код. Спасибо.

SELECT ID FROM
(
select ID, Temperature, LAG(Temperature,1) OVER(ORDER BY ID) AS Lag
from weather
) where Temperature>Lag
myodo.ru Мудрец (12806) для общего случая сортировка по id может быть ошибочной.
Похожие вопросы