LEFT JOIN используется, когда нужно получить все записи из левой таблицы и соответствующие записи из правой таблицы, а если соответствий нет — то в правой части будут NULL.
-- 1. Вывести список клиентов без заказов за последний месяц.
LEFT JOIN используется, когда нужно получить все записи из левой таблицы и соответствующие записи из правой таблицы, а если соответствий нет — то в правой части будут NULL.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
-- 1. Вывести список клиентов без заказов за последний месяц. -- Структура: -- customers (customer_id, name, registration_date) -- orders (order_id, customer_id, order_date, amount)
SELECT DISTINCT c.customer_id, c.name FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id and o.order_date >= DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' WHERE o.amount IS NULL
-- 2. Рассчитать долю каждой подкатегории в общей выручке категории -- sales (product_id, category, subcategory, revenue, sale_date) -- Нужен результат: category | subcategory | share_of_category
Ответ
LEFT JOIN используется, когда нужно получить все записи из левой таблицы и соответствующие записи из правой таблицы, а если соответствий нет — то в правой части будут NULL.
Например, есть таблица customers и таблица orders. Если нужно вывести всех клиентов и их заказы, включая тех клиентов, которые ещё не сделали ни одного заказа, то применим LEFT JOIN:
SELECT customers.id, customers.name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;
Так мы получим полный список клиентов, а для тех, у кого нет заказов, поля из таблицы orders будут NULL.