From 9082197c806abe42cdc017e624df27b33374072d Mon Sep 17 00:00:00 2001 From: Dmitry Medvedev Date: Thu, 21 May 2026 00:40:28 +0500 Subject: [PATCH] add file filtering with 5 tasks --- dmedvedev/filtering.sql | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 dmedvedev/filtering.sql diff --git a/dmedvedev/filtering.sql b/dmedvedev/filtering.sql new file mode 100644 index 0000000..0635dfb --- /dev/null +++ b/dmedvedev/filtering.sql @@ -0,0 +1,44 @@ +-- TASK 1 +--Задача 1 — Товары для продажи +SELECT name, category, price, price * 1.3 AS price_with_markup, price * 1.5 AS price_with_vat +FROM products +WHERE in_stock IS TRUE AND category != 'smartwatch' AND price BETWEEN 100 AND 1300; +/* Что лучше читается `BETWEEN 100 AND 1300` или `price >= 100 AND price <= 1300` и почему? + +Читается лучше выражение с between потому что сразу видно и понятно внутри какого диапазона мы находимся, +а когда используются знаки сравнения, то необходимо вчитываться и вдумываться, какой знаки что именно он обозначает*/ + +--TASK 2 +-- Задача 2 — Скидочная корзина: дешёвые или дорогие +SELECT name, price, price * 0.85 AS price_with_discount +FROM products +WHERE price < 100 OR price > 1000; +/* Почему важно явно писать скобки в условии с **`OR`**, даже если кажется, что и так понятно? + +потому что скобки защищают от логических ошибок */ + +--TASK 3 +--Задача 3 — Категории для рекламы +SELECT id, name, category, price +FROM products +WHERE (category = 'tablet' OR category = 'smartphone' OR category = 'mouse') AND price < 1000 +ORDER BY price DESC; + +--TASK 4 +-- Задача 4 — Убрать iPhone из выборки +SELECT name, category, price +FROM products +WHERE name NOT LIKE '%iPhone%'; + +--TASK 5 +-- Задача 5 — Поиск товаров по названию +SELECT * +FROM products +WHERE name ILIKE '%pro%'; + +SELECT * +FROM products +WHERE name ILIKE '%mx%'; + +/* так лучше потому что для магазина с поисковой строкой не должно быть важно какой регистр используют люди для поиска товара, + в любом случае, должен находиться релевантный товар для человека*/ \ No newline at end of file