Add homework on SQL UNION
This commit is contained in:
@@ -0,0 +1,49 @@
|
|||||||
|
-- Задание 1
|
||||||
|
SELECT id, name, 'active' AS user_status
|
||||||
|
FROM users
|
||||||
|
WHERE is_active = TRUE
|
||||||
|
UNION ALL
|
||||||
|
SELECT id, name, 'inactive' AS user_status
|
||||||
|
FROM users
|
||||||
|
WHERE is_active = FALSE
|
||||||
|
ORDER BY name;
|
||||||
|
|
||||||
|
-- Ответ на вопрос
|
||||||
|
-- 1. Количество строк не изменилось
|
||||||
|
-- 2. Предположу, что подача информации в таком виде более информативней(понятней).
|
||||||
|
|
||||||
|
|
||||||
|
-- Задание 2
|
||||||
|
SELECT id AS order_id, user_id, order_date, 'old' AS period
|
||||||
|
FROM orders
|
||||||
|
WHERE order_date < '2024-01-01'
|
||||||
|
UNION ALL
|
||||||
|
SELECT id AS order_id, user_id, order_date, 'new' AS period
|
||||||
|
FROM orders
|
||||||
|
WHERE order_date >= '2024-01-01'
|
||||||
|
ORDER BY order_date, order_id;
|
||||||
|
|
||||||
|
-- Ответ на вопрос
|
||||||
|
-- 1. В dbeaver в самой левой колонке отображается номерация строк, а снизу общее количество строк который выдал запрос.
|
||||||
|
-- На последней строке с old можно увидеть число в самой левой колонке, это и есть количество строк c old. Далее отнимаем общее кол-во строк от old и получаем кол-во new.
|
||||||
|
-- 2. Тяжело ответить на такой вопрос, не знаю. Если у меня были бы сомнения, я бы у новичка спросил.
|
||||||
|
|
||||||
|
|
||||||
|
-- Задание 3
|
||||||
|
SELECT DISTINCT p.id AS product_id,
|
||||||
|
p.name AS product_name,
|
||||||
|
'ordered' AS product_status
|
||||||
|
FROM products p
|
||||||
|
JOIN order_items oi ON oi.product_id = p.id
|
||||||
|
UNION ALL
|
||||||
|
SELECT DISTINCT p.id AS product_id,
|
||||||
|
p.name AS product_name,
|
||||||
|
'never_ordered' AS 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. Нам нужно чтобы товар(products) ни разу не заказывали(order_items), получается что мы проверяем есть ли ссылка в каком нибудь заказе на продукт.
|
||||||
|
-- 2. Дает сигнал бизнесу что товар не хотят покупать, возможно на него нужно сделать скидку или прорекламировать товар у блогера какого нибудь.
|
||||||
Reference in New Issue
Block a user