Клиенты без заказов SQL: задача на LEFT JOIN и NULL

Задача «найти строки без соответствия в другой таблице» называется антисоединением. Её можно выразить через LEFT JOIN с проверкой отсутствующей правой строки или через NOT EXISTS.

Проверяйте поле, которое не бывает NULL у существующего заказа. Иначе реальная запись с пустым необязательным атрибутом может ошибочно попасть в список клиентов без покупок. Точные требования к выводу приведены ниже.

Проверьте решение без регистрации. Объяснения и последовательная практика — в курсе «SQL с нуля: бесплатный курс с практикой».

Клиенты без заказов

В таблице customers хранятся все зарегистрированные клиенты, а в orders — их заказы с датой и суммой. Некоторые клиенты успели сделать несколько заказов, другие — ни одного. Нужно разобраться, кто из них так и не оформил ни одной покупки.

Верни ровно два столбца — customer_id и name — для тех клиентов, у которых в таблице orders не числится ни одной записи. Результат упорядочи по customer_id по возрастанию.

Запрос должен состоять из одного SELECT, не должен менять данные и не должен возвращать столбцы заказа.

Пример

Подготовка данных
INSERT INTO customers VALUES (1, 'Алиса'), (2, 'Борис'), (3, 'Вера'), (4, 'Глеб');
INSERT INTO orders VALUES (101, 1, '2024-01-10', 5000), (102, 1, '2024-03-01', 1000), (103, 2, '2024-02-10', 3000);
Вывод
3|Вера
4|Глеб
РешениеSQL · SQLite

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

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

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