Напишите SQL-запрос для списка уникальных подразделений
Что проверяют
Различаете ли DISTINCT и GROUP BY и понимаете ли, зачем тестировщику уникальный список: это проверка справочника и подготовка тест-данных, а не абстрактное упражнение на синтаксис.
Как отвечать
Если подразделения лежат справочником, запрос короткий:
SELECT DISTINCT name
FROM departments
ORDER BY name;Сразу оговорите главное: в нормальном справочнике на названии стоит уникальный индекс, и DISTINCT там лишний. Если он что-то схлопнул, это находка, а не особенность запроса. Когда отдел хранится строкой прямо в таблице сотрудников, полезнее группировка:
SELECT department_name, count(*) AS employees
FROM employees
GROUP BY department_name
ORDER BY department_name;Она даёт и список, и распределение: отдел с одним сотрудником обычно означает опечатку или разное написание одного и того же названия. Для QA это ровно та информация, ради которой запрос и пишется.
Где спотыкаются
Думают, что DISTINCT относится к одной колонке рядом с ним. Он применяется ко всей строке выборки, поэтому стоит добавить id, и уникальными станут все записи, а результат вернётся в исходном объёме.
Забывают про NULL. В выборке все пустые значения схлопываются в одну строку, хотя привычное правило говорит, что NULL не равен NULL. В сравнении это правило работает, а DISTINCT и GROUP BY считают такие значения одинаковыми.
Затыкают DISTINCT дубли, пришедшие из лишнего соединения. Симптом исчезает, причина остаётся, а на большом объёме запрос заметно тяжелеет. Правильная реакция тестировщика: выяснить, откуда взялись повторы, и завести баг, если их там быть не должно.