Files
homework/dmedvedev/union.sql
T
2026-05-28 01:36:48 +05:00

65 lines
2.4 KiB
SQL
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--таск 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 идеи: что можно с этими товарами сделать)?
Что эти товары себя никаким образом не окупают, возмонжо их вообще стоит убрать из ассортимента.
*/