Для каждого банка мне нужно найти все даты с более высоким активом по сравнению с его предыдущими датами (квартал). (Например, банк (id: 123) имеет актив 10 000 на 31.03.02 и актив 20 000 на 30.06.02. Тогда идентификатор банка (123), стоимость актива (20 000) и дата (30.06.02). 10 наблюдения за выходной таблицей. Как я могу сделать это в одном запросе?
Вы бы использовали lag()
:
select t.*
from (select t.*,
lag(asset) over (partition by id order by date) as prev_asset
from t
) t
where asset > prev_asset ;
Примечание. Это предполагает, что все банки имеют ровно одну строку для каждого интересующего квартала — для банка нет повторяющихся строк и нет пропущенных кварталов.