## Контекст (таблицы и пример данных) ### Таблицы - `user_active_days(user_id, day)` ### Пример да
SQL Developer
Senior
## Контекст (таблицы и пример данных)
### Таблицы
- `user_active_days(user_id, day)`
### Пример данных
**user_active_days**
| user_id | day |
|-------:|------------|
| 1 | 2025-01-01 |
| 1 | 2025-01-02 |
| 1 | 2025-01-04 |
---
## Задача
Собрать непрерывные интервалы активности по дням.
Вернуть: `user_id`, `start_day`, `end_day`, `days_cnt`.
Ответы
```sql
WITH g AS (
SELECT
user_id,
day,
(day - (ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY day))::int) AS grp
FROM user_active_days
)
SELECT
user_id,
MIN(day) AS start_day,
MAX(day) AS end_day,
COUNT(*) AS days_cnt
FROM g
GROUP BY user_id, grp
ORDER BY user_id, start_day;
```