SQL: SELF JOIN и поиск уникальных пар — Пары полных тёзок внутри отдела

Практическая задача по SQL на тему «SELF JOIN и поиск уникальных пар». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.

Пары полных тёзок внутри отдела

Что уже дано

Уже заполнена employees(emp_id INTEGER PRIMARY KEY,full_name TEXT NOT NULL,department_id INTEGER NOT NULL). Все ID положительные INTEGER, emp_id уникален. Имя может повторяться; сравнивайте полное имя точно, с учётом регистра (BINARY). Оно не содержит | и перевода строки. Каждый сотрудник относится к одному отделу; до 1000 строк, пустая таблица допустима.

Что нужно сделать

Найдите все пары полных тёзок внутри одного отдела: у двух разных сотрудников должны совпадать и full_name, и department_id. В паре emp_id_1 < emp_id_2. Каждая неупорядоченная пара выводится ровно один раз; сотрудник без полного тёзки в своём отделе строк не создаёт. Отработайте SELF JOIN.

Ввод и вывод

Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 3 столбцов в указанном порядке и с этими именами: emp_id_1, emp_id_2, department_id. Все три столбца — INTEGER без NULL. Сортировка: department_id ASC, emp_id_1 ASC, emp_id_2 ASC. При отсутствии пар результат пустой. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.

Пример

Подготовка данных
INSERT INTO employees VALUES (1,'Anna',10),(2,'Anna',10),(3,'Boris',10),(4,'Anna',20),(5,'Anna',20),(6,'Igor',20);
Вывод
1|2|10
4|5|20
РешениеSQL · SQLite

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

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

Связанные задачи