## Контекст (таблицы и пример данных) ### Таблицы - `accounts(id, client_id)` - `ledger(tx_id, acco
SQL Developer
Senior
## Контекст (таблицы и пример данных)
### Таблицы
- `accounts(id, client_id)`
- `ledger(tx_id, account_id, tx_time, amount)`
> `amount` положительный для поступления, отрицательный для списания.
### Пример данных
**accounts**
| id | client_id |
|---:|----------:|
| 1 | 100 |
**ledger**
| tx_id | account_id | tx_time | amount |
|-----:|-----------:|---------------------|------:|
| 1 | 1 | 2025-01-01 10:00:00 | 100 |
| 2 | 1 | 2025-01-01 12:00:00 | -30 |
| 3 | 1 | 2025-01-02 09:00:00 | 50 |
---
## Задача
Построить дневной баланс по каждому счёту на конец дня.
Вернуть: `account_id`, `day`, `end_of_day_balance`.
Ответы
```sql
WITH daily AS (
SELECT account_id, tx_time::date AS day, SUM(amount) AS day_delta
FROM ledger
GROUP BY account_id, tx_time::date
)
SELECT
account_id,
day,
SUM(day_delta) OVER (PARTITION BY account_id ORDER BY day) AS end_of_day_balance
FROM daily
ORDER BY account_id, day;
```