В Практикуме курс разбит на спринты (sprints), часть из них обязательная (is_required). Студент отправляет проект на ревью, и ревьюер ставит rework (на доработку) или accepted (принято). В reviews хранится каждое ревью; бывает, что принятый проект студент пересдаёт и получает второй accepted.
Верните student_id студентов курса «Аналитик данных» (по enrollments), у которых по каждому обязательному спринту этого курса есть хотя бы одно ревью accepted. Порядок — по student_id.
В работе: Допуск к выпускному проекту: кураторы проверяют, что закрыт каждый обязательный спринт, а не их число.
Таблицы
enrollments — кто на каком курсе
| Колонка | Тип | Что значит |
|---|---|---|
student_id | int | студент |
course | text | курс |
sprints — спринты курсов
| Колонка | Тип | Что значит |
|---|---|---|
sprint_id | int | ключ |
course | text | курс |
title | text | название |
is_required | boolean | обязательный |
reviews — одна строка — одно ревью проекта
| Колонка | Тип | Что значит |
|---|---|---|
review_id | int | ключ |
student_id | int | студент |
sprint_id | int | спринт |
status | text | rework / accepted |
reviewed_at | timestamp | время ревью |
Пример: данные
enrollments · 3 строки
| student_id | course |
|---|---|
| 1 | Аналитик данных |
| 2 | Аналитик данных |
| 3 | Аналитик данных |
sprints · 4 строки
| sprint_id | course | title | is_required |
|---|---|---|---|
| 10 | Аналитик данных | SQL | True |
| 11 | Аналитик данных | Pandas | True |
| 12 | Аналитик данных | A/B-тесты | True |
| 13 | Аналитик данных | Tableau | False |
reviews · 8 строк
| review_id | student_id | sprint_id | status | reviewed_at |
|---|---|---|---|---|
| 1 | 1 | 10 | accepted | 2026-02-01T10:00:00 |
| 2 | 1 | 11 | rework | 2026-02-10T10:00:00 |
| 3 | 1 | 11 | accepted | 2026-02-12T10:00:00 |
| 4 | 1 | 12 | accepted | 2026-03-01T10:00:00 |
| 5 | 2 | 10 | accepted | 2026-02-02T10:00:00 |
| 6 | 2 | 11 | accepted | 2026-02-11T10:00:00 |
| 7 | 2 | 12 | rework | 2026-03-02T10:00:00 |
| 8 | 3 | 10 | accepted | 2026-02-03T10:00:00 |
Ожидаемый ответ
| student_id |
|---|
| 1 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
student_id
Источник: наша задача на данных Яндекса: ревью спринтов в Практикуме. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.