125 lines
3.9 KiB
SQL
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%';
|
|
|