Войти Регистрация
Data base

214. Студенты, сдавшие все обязательные спринты

Средняя

В Практикуме курс разбит на спринты (sprints), часть из них обязательная (is_required). Студент отправляет проект на ревью, и ревьюер ставит rework (на доработку) или accepted (принято). В reviews хранится каждое ревью; бывает, что принятый проект студент пересдаёт и получает второй accepted.

Верните student_id студентов курса «Аналитик данных» (по enrollments), у которых по каждому обязательному спринту этого курса есть хотя бы одно ревью accepted. Порядок — по student_id.

В работе: Допуск к выпускному проекту: кураторы проверяют, что закрыт каждый обязательный спринт, а не их число.

Таблицы

enrollments — кто на каком курсе

КолонкаТипЧто значит
student_idintстудент
coursetextкурс

sprints — спринты курсов

КолонкаТипЧто значит
sprint_idintключ
coursetextкурс
titletextназвание
is_requiredbooleanобязательный

reviews — одна строка — одно ревью проекта

КолонкаТипЧто значит
review_idintключ
student_idintстудент
sprint_idintспринт
statustextrework / accepted
reviewed_attimestampвремя ревью

Пример: данные

enrollments · 3 строки

student_idcourse
1Аналитик данных
2Аналитик данных
3Аналитик данных

sprints · 4 строки

sprint_idcoursetitleis_required
10Аналитик данныхSQLTrue
11Аналитик данныхPandasTrue
12Аналитик данныхA/B-тестыTrue
13Аналитик данныхTableauFalse

reviews · 8 строк

review_idstudent_idsprint_idstatusreviewed_at
1110accepted2026-02-01T10:00:00
2111rework2026-02-10T10:00:00
3111accepted2026-02-12T10:00:00
4112accepted2026-03-01T10:00:00
5210accepted2026-02-02T10:00:00
6211accepted2026-02-11T10:00:00
7212rework2026-03-02T10:00:00
8310accepted2026-02-03T10:00:00

Ожидаемый ответ

student_id
1
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
student_id
антиджойнподзапросGROUP BYHAVINGDISTINCT

Источник: наша задача на данных Яндекса: ревью спринтов в Практикуме. Условие пересказано своими словами.