В таблице staff хранятся сотрудники (id, name, city). Для оффлайн-митапов нужно составить список всех пар коллег, которые находятся в ОДНОМ городе. Каждая пара должна встречаться ровно один раз (пары {Анна, Борис} и {Борис, Анна} — это одна и та же пара, не дублируй) и человек не образует пару сам с собой. Верни колонки name_a, name_b, city, где внутри пары name_a — сотрудник с меньшим id. Сортировка по city, затем по name_a, затем по name_b.
CREATE TABLE staff (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
city TEXT NOT NULL
);
self-join join pairs inequality-join sqlite deduplication
Задача «Самосоединение: пары сотрудников из одного города» учит решать задачи по теме «self-join» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в Avito и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Хочешь разобрать SQL системно с нуля — пройди бесплатный курс «SQL с нуля» и закрепи навык в тренажёре.
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи