65 lines
2.4 KiB
SQL
65 lines
2.4 KiB
SQL
--таск 1
|
||
|
||
SELECT id, name, 'active' AS user_status
|
||
FROM users
|
||
WHERE is_active IS TRUE
|
||
|
||
UNION ALL
|
||
|
||
SELECT id, name, 'inactive' AS user_status
|
||
FROM users
|
||
WHERE is_active IS FALSE
|
||
|
||
ORDER BY name;
|
||
|
||
/*1. Что будет, если вместо **`UNION ALL`** написать **`UNION`**?
|
||
- Попробуй и запиши, изменилось ли количество строк.
|
||
|
||
В данном случае ничего не поменяется, но вообще если
|
||
бы были одинаковые строчки в двух запросах, то дубликаты бы удалились
|
||
|
||
Зачем в результат добавлять колонку user_status, если флаг активности уже есть в таблице users?
|
||
|
||
Чтобы уйти от булевые true и false и перейти к нормально-читаемым
|
||
*/
|
||
|
||
--таск 2
|
||
SELECT id AS order_id, user_id, order_date, 'old' AS period
|
||
FROM orders o
|
||
WHERE order_date < '2024-01-01'
|
||
|
||
UNION ALL
|
||
|
||
SELECT id AS order_id, user_id, order_date, 'new' AS period
|
||
FROM orders o
|
||
WHERE order_date >= '2024-01-01'
|
||
|
||
ORDER BY order_date, order_id;
|
||
|
||
/*Как ты по колонке period поймёшь, сколько заказов было до и после даты‑границы (словами, без SQL)?
|
||
|
||
*/
|
||
|
||
--task 3
|
||
|
||
SELECT DISTINCT oi.product_id, p.name AS product_name, 'ordered' product_status
|
||
FROM products p
|
||
JOIN order_items oi ON oi.product_id = p.id
|
||
|
||
UNION ALL
|
||
|
||
SELECT oi.product_id, p.name AS product_name, 'never_ordered' product_status
|
||
FROM products p
|
||
LEFT JOIN order_items oi ON oi.product_id = p.id
|
||
|
||
WHERE oi.product_id IS NULL
|
||
|
||
ORDER BY product_name
|
||
|
||
/*
|
||
1. Почему в запросе на «не покупали» проверка IS NULL должна быть по полю из order_items, а не из products?
|
||
Потому что именно в order_items фиксируются заказанные позиции, а в products просто наименования товаров и не важно кто-то их покупал или нет.
|
||
|
||
2.Какой сигнал для бизнеса даёт список с product_status = 'never_ordered' (1–2 идеи: что можно с этими товарами сделать)?
|
||
Что эти товары себя никаким образом не окупают, возмонжо их вообще стоит убрать из ассортимента.
|
||
*/ |