Признавайтесь, было интересно, какие тестовые у мировых IT-гигантов? Мы прочитали ваши мысли и принесли вам задачку на группировку и знание расчетных функций.
Вам дана таблица Orders.
Необходимо написать запрос для маркетинговой команды, который выявит всех клиентов, кто купил iPhone, но не купил Airpods.
Что проверяет такая задача?
🔵 Базовое знание SQL.
🔵 Знание оконных функций и умение их успешно применять на практике.
🔵Знание расчетных функций.
Решение
1. В результате запроса выводим только имя клиента (как сказано в условии задачи).
2. Берем таблицу-источник и прописываем конструкцию, нужную для проведения расчетов относительно клиентов.
3. Задаем условия для вывода клиентов:
🔵Условие для определения, покупал ли данный клиент iPhone: обозначаем 1, если покупал.
🔵 Условие для определения, покупал ли данный клиент Airpods: обозначаем 1, если покупал.
4. Так как нам нужны клиенты, которые купили Iphone, но не купили Airpods, то присваиваем Iphone = 1, а Airpods = 0.
Наш вариант решения:
select customer_name
from orders
group by customer_name
having
max(case prod_name when 'iPhone' then 1 else 0 end)=1
and
max(case prod_name when 'Airpods' then 1 else 0 end)=0
Кстати, в предыдущих и этом решениях мы не подписывали диалект SQL.
Напишите в комментариях — на каком SQL мы пишем.
@leftjoin_career
#разбор_тестового

