## Контекст (таблицы и пример данных) ### Таблицы - `ledger(tx_id, account_id, tx_time, amount)` >

SQL Developer Senior
## Контекст (таблицы и пример данных) ### Таблицы - `ledger(tx_id, account_id, tx_time, amount)` > Списание — `amount < 0`. ### Пример данных **ledger** | tx_id | account_id | tx_time | amount | |-----:|-----------:|----------|------:| | 1 | 1 | 2025-01-01| -10 | | 2 | 1 | 2025-01-02| -50 | | 3 | 1 | 2025-01-03| -20 | --- ## Задача Посчитать суммарное списание по дням и найти дни, где списание — **локальный максимум** (больше, чем на день до и день после). Вернуть: `day`, `debit_sum`.
Ответы
```sql WITH daily AS ( SELECT tx_time::date AS day, SUM(-amount) AS debit_sum FROM ledger WHERE amount < 0 GROUP BY tx_time::date ), w AS ( SELECT day, debit_sum, LAG(debit_sum) OVER (ORDER BY day) AS prev_sum, LEAD(debit_sum) OVER (ORDER BY day) AS next_sum FROM daily ) SELECT day, debit_sum FROM w WHERE (prev_sum IS NULL OR debit_sum > prev_sum) AND (next_sum IS NULL OR debit_sum > next_sum) ORDER BY day; ```