Какой оператор в SQL сортирует данные по убыванию
Что проверяют
Сам ответ ORDER BY ... DESC знает почти каждый, поэтому вопрос служит входом. Тестировщику дальше задают практическое: как вы проверите сортировку таблицы на экране, куда попадут пустые значения и почему на второй странице повторилась запись с первой.
Как отвечать
Сортирует ORDER BY, направление задаёт слово после столбца: ASC по возрастанию (по умолчанию) или DESC по убыванию. Затем покажите детали, которые влияют на тесты:
- направление у каждого столбца своё: в
ORDER BY created_at, price DESCпо убыванию идёт толькоprice, дата сортируется по возрастанию; - NULL: в PostgreSQL и Oracle при
DESCпустые значения оказываются первыми, в MySQL и SQL Server последними. Управлять этим явно позволяютNULLS FIRSTиNULLS LASTв PostgreSQL и Oracle, в MySQL их нет; - равные значения: база не гарантирует порядок строк с одинаковым ключом. Если интерфейс листает страницы через
LIMITиOFFSETпо неуникальной колонке, записи будут прыгать между страницами. Надёжный запрос добавляет уникальный хвост:ORDER BY price DESC, id DESC; - тип и сравнение строк: числа, хранящиеся как текст, сортируются как строки, и при сортировке по убыванию «9» окажется выше «10». Порядок кириллицы, регистра и буквы «ё» зависит от collation базы.
Для QA полезно рассказать, как вы применяете это в работе: сверяете список в интерфейсе с выборкой SELECT ... ORDER BY ... DESC, проверяете граничные случаи (пустые поля, равные значения, одна запись, спецсимволы) и выясняете, кто сортирует данные. Частый дефект: фронтенд сортирует только загруженную страницу, а не весь набор.
Где спотыкаются
Пишут DESC один раз и считают, что оно действует на все перечисленные столбцы. На составной сортировке это даёт неверный ожидаемый результат в тест-кейсе.
Забывают про NULL. Тест, написанный на одной базе, падает на другой, и дефект заводится на то, что на самом деле является штатным поведением СУБД.
Не проверяют стабильность при пагинации. Дубли и пропуски на стыке страниц входят в число самых частых реальных багов сортировки, и кандидат, который про них знает, заметно выделяется.