Files
homework/mnoskov/postgresql/UNION/DQL_union_practice.sql
T
2026-03-09 22:21:17 +03:00

75 lines
1.5 KiB
SQL

-- Задание 1
SELECT
id,
name,
'active' AS user_status
FROM
mnoskov.users
WHERE
is_active = TRUE
UNION ALL
SELECT
id,
name,
'inactive' AS user_status
FROM
mnoskov.users
WHERE
is_active = FALSE
ORDER BY name;
-- Если написать просто UNION, то в данном задании ничего не изменится
-- Задание 2
SELECT
id AS order_id,
user_id,
order_date,
'old' AS period
FROM
mnoskov.orders
WHERE
order_date < '2025-02-01'
UNION ALL
SELECT
id AS order_id,
user_id,
order_date,
'new' AS period
FROM
mnoskov.orders
WHERE
order_date >= '2025-02-01'
ORDER BY
order_date, order_id;
-- По колонке period я пойму старый(old) заказ или новый(new)
-- Я не могу ответить, потому что CASE WHEN ещё не проходили
-- Задание 3
SELECT DISTINCT
oi.product_id,
p.name AS product_name,
'ordered' AS product_status
FROM
mnoskov.products p
JOIN
mnoskov.order_items oi ON p.id = oi.product_id
UNION ALL
SELECT DISTINCT
p.id AS product_id,
p.name AS product_name,
'never_ordered' AS product_status
FROM
mnoskov.products p
LEFT JOIN
mnoskov.order_items oi ON p.id = oi.product_id
WHERE oi.product_id = NULL;
-- Проверка IS NULL по полю из order_items, потому что это права таблица, и null будут добавляться в неё
-- 1) Понизить цену товара 2) лучше прорекламировать 3) снять с продажи