## Контекст (таблицы и пример данных) ### Таблицы - `ledger(tx_id, client_id, tx_time, amount)` ##
SQL Developer
Senior
## Контекст (таблицы и пример данных)
### Таблицы
- `ledger(tx_id, client_id, tx_time, amount)`
### Пример данных
**ledger**
| tx_id | client_id | tx_time | amount |
|-----:|----------:|---------------------|------:|
| 1 | 1 | 2025-01-01 10:00:00 | 10 |
| 2 | 1 | 2025-01-02 10:00:00 | 10 |
| 3 | 1 | 2025-01-03 10:00:00 | 10 |
| 4 | 2 | 2025-01-01 10:00:00 | 10 |
| 5 | 2 | 2025-01-03 10:00:00 | 10 |
---
## Задача
Найти клиентов, которые имели хотя бы одну транзакцию **в 3 последовательных календарных дня**.
Вернуть: `client_id`.
Ответы
```sql
WITH d AS (
SELECT DISTINCT client_id, tx_time::date AS day
FROM ledger
), g AS (
SELECT
client_id,
day,
(day - (ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY day))::int) AS grp
FROM d
)
SELECT client_id
FROM g
GROUP BY client_id, grp
HAVING COUNT(*) >= 3;
```