add tasks with union and union all
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
--таск 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 идеи: что можно с этими товарами сделать)?
|
||||
Что эти товары себя никаким образом не окупают, возмонжо их вообще стоит убрать из ассортимента.
|
||||
*/
|
||||
Reference in New Issue
Block a user