Применить код к последним строкам для каждой строки
Есть таблица формата
| Id | date | balance |
|---|---|---|
| 1 | 01.01 | 5 |
| 1 | 01.02 | 15 |
| 1 | 01.03 | 20 |
| 1 | 01.04 | 20 |
| 1 | 01.05 | 40 |
и есть код
with cte_1 as (
select *, ROW_NUMBER() over(partition by id order by balance) as rank
from table
)
SELECT id,
1 - 2 * sum((cast(balance as float) * (rank - 1) + balance / 2)) / count(*) / sum(balance) AS gini
FROM cte_1
GROUP BY id
ORDER BY id ASC
Как написать запрос, чтобы расчеты применялись для снимка в 4 строки для каждой строки.
Вот так:

Для даты 01.04 берутся строки с датами 01.01 - 01.04, для 01.05 берутся строки 01.02-01.05 и т.п.