Files
homework/dsolovianov/postgresql/Фильтрация.sql
2026-05-11 07:02:07 +04:00

125 lines
3.9 KiB
SQL

/*INSERT INTO dsolovianov.products (name, category, price, in_stock) VALUES
('Mi Band 7', 'smartwatch', 49.00, true),
('Surface Pro', 'tablet', 1299.00, true),
('iPhone 15', 'smartphone', 999.00, true),
('Logitech MX Master', 'mouse', 120.00, true);*/
/*
- Задача 1 — Товары для продажи
Ты настраиваешь главную витрину магазина. Нужно показывать только товары, которые сейчас реально готовы продавать.
**✅ Условия:**
- товар **в наличии**
- категория **НЕ smartwatch**
- цена **от 100 до 1300**
- отдельно хотим видеть цену:
- с наценкой 30% ( price + 30%)
- с «виртуальным НДС» 50% (price + 50%)
**✅ Вывести:**
- `name`, `category`, `price`
- `price_with_markup` = price + 30%
- `price_with_vat` = price + 50%
- Задача 2 — Скидочная корзина: дешёвые или дорогие
Нужно собрать товары под акцию
**✅ Условия:**
- участвуют товары с ценой **меньше 100** или **больше 1000**
- скидка 15% (price - 15%)
**✅ Вывести:**
- `name`, `price`
- `price_with_discount` = price - 15%
- Задача 3 — Категории для рекламы
Маркетолог просит товары только из нужных категорий:
**✅ Условия:**
- category в списке: `tablet`, `smartphone`, `mouse`
- цена **не меньше 100**
**✅ Вывести:**
- `id`, `name`, `category`, `price`
- сортировка по цене по убыванию
- Задача 4 — Убрать iPhone из выборки
Собираем список товаров, **кроме iPhone**, чтобы сделать подборку “не Apple”.
**✅ Условия:**
- название **НЕ содержит** `iPhone`
**✅ Вывести:**
- `name`, `category`, `price`
- Задача 5 — Поиск товаров по названию
Представь, что у пользователя есть строка поиска на сайте. Нужно сделать **2 запроса**, которые помогут искать товары по названию.
- 1) Найти товары, где в названии есть `"pro"` (без учёта регистра)
📌 Условия:
- поиск должен сработать на `pro`, `PRO`, `Pro`
- вывести: `name`, `category`, `price`
- 2) Найти товары, где в названии есть `"mx"` (без учёта регистра)
📌 Условия:
- вывести: `name`, `category`, `price`
- отсортировать по `price DESC`
*/
SELECT name,
category,
price,
(price * 0.30) + price AS price_with_markup,
(price * 0.50) + price AS price_with_vat
FROM dsolovianov.products
WHERE category NOT IN ('smartwatch')
AND (price >= 100 AND price <= 1300);
SELECT name,
price,
price - (price * 0.15) AS price_with_discount
FROM dsolovianov.products
WHERE price < 100 OR price > 1000;
SELECT id,
name,
category,
price
FROM dsolovianov.products
WHERE category IN ('tablet', 'smartphone', 'mouse') AND price >= 100
ORDER BY price DESC;
SELECT name,
category,
price
FROM dsolovianov.products
WHERE category NOT LIKE '%iPhone%';
SELECT name,
category,
price
FROM dsolovianov.products
WHERE name ILIKE '%pro%';
SELECT name,
category,
price
FROM dsolovianov.products
WHERE name ILIKE '%mx%';