Перейти к основному содержимому

Проверка решения

Кнопка «Проверить решение» берёт текст из редактора и прогоняет его по всем вариантам данных задания в отдельной чистой базе. Живая база в этом не участвует.

Когда всё сошлось​

53 варианта данных · 53 сошлось
Полоса прогона: один штрих на вариант данных. Решение записано в solutions/.
проверка пройденаПолоса прогона: один штрих на вариант данных. Решение записано в solutions/.

Штрихов ровно столько, сколько вариантов было прогнано, — видно не слово «зачёт», а объём проверки. Решение сохраняется в solutions/<задание>.sql; это файл, который смотрит преподавательский CI.

Когда не сошлось​

53 варианта данных · 36 сошлось · 17 нет
Красным — доля вариантов, на которых решение не сходится; ниже перечислены сами варианты.
проверка упалаКрасным — доля вариантов, на которых решение не сходится; ниже перечислены сами варианты.

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

Построчное сравнение: расхождения помечены в тех ячейках, где они есть.
разбор вариантаПострочное сравнение: расхождения помечены в тех ячейках, где они есть.

Это не подсказка «как надо» — это данные, на которых стало видно расхождение. Ожидаемый результат скрытого варианта открывается только после того, как решение на нём упало; эталонное решение остаётся закрытым.

Если задание проверяет порядок строк, сравнение позиционное: строка, которая в ответе есть, но стоит не на своём месте, помечается отдельно от пропущенной и лишней — и в тексте ошибки сказано, с какой позиции порядок разошёлся.

Ошибки формулируются словами, а не техническими кодами: «строки верные, а порядок — нет», «не тот состав колонок: не хватает …», «не то число строк: 7» вместо «hash mismatch». Ошибку самой СУБД показываем дословно — она точная и та же, что в любом клиенте, — но карточкой с заголовком.

Почему вариантов так много​

Один набор строк ничего не доказывает. Запрос без нужного условия пройдёт, если в таблице и так нет лишних строк; запрос с LIMIT 1 пройдёт, если подходящая строка одна. Поэтому варианты специально включают крайности: пусто, ровно одна строка, только один класс записей, всё сразу.

Три варианта открыты во вкладке «Примеры данных» — по ним удобно понять условие. Остальные скрыты. Вариант, на котором решение упало, можно загрузить в свою живую базу кнопкой «В мою базу» и отладить запрос прямо на этих данных.

Типичные причины расхождения​

СимптомЧто обычно не так
сходится на примерах, падает на скрытыхне обработан крайний случай: пустой результат, одна строка, NULL в колонке
расходятся имена колонокне задан псевдоним AS, которого требует условие
расходится порядок строкнет ORDER BY, а условие требует порядка
«конструкции SQL» не пройденыиспользована запрещённая конструкция или нет обязательной — они перечислены в блоке «что должно получиться»

Числа сравниваются с точностью, объявленной в задании, а не побайтово: 40 и 40.00 — это одно и то же значение, а не расхождение.