-- 1. Вывести список клиентов без заказов за последний месяц.

LEFT JOIN используется, когда нужно получить все записи из левой таблицы и соответствующие записи из правой таблицы, а если соответствий нет — то в правой части будут NULL.

Короткий ответ

Что ответить на собеседовании

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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее