## Контекст (таблицы и пример данных) ### Таблицы - `employees(id, name, team_id)` - `vacations(emp
SQL Developer
Senior
## Контекст (таблицы и пример данных)
### Таблицы
- `employees(id, name, team_id)`
- `vacations(employee_id, start_date, end_date)`
### Пример данных
**employees**
| id | name | team_id |
|---:|------|--------:|
| 1 | A | 10 |
| 2 | B | 10 |
**vacations**
| employee_id | start_date | end_date |
|-----------:|------------|------------|
| 1 | 2025-07-01 | 2025-07-10 |
| 2 | 2025-07-05 | 2025-07-08 |
---
## Задача
Найти пары сотрудников **в одной команде**, у которых отпуска пересекаются по датам.
Вернуть: `team_id`, `emp1`, `emp2`, `overlap_start`, `overlap_end`.
Ответы
```sql
SELECT
e1.team_id,
e1.id AS emp1,
e2.id AS emp2,
GREATEST(v1.start_date, v2.start_date) AS overlap_start,
LEAST(v1.end_date, v2.end_date) AS overlap_end
FROM employees e1
JOIN vacations v1 ON v1.employee_id = e1.id
JOIN employees e2 ON e2.team_id = e1.team_id AND e2.id > e1.id
JOIN vacations v2 ON v2.employee_id = e2.id
WHERE v1.start_date <= v2.end_date
AND v2.start_date <= v1.end_date;
```