CREATE TABLE users ( id int PRIMARY KEY, -- NOT NULL name varchar(100) NOT NULL, age int, email varchar(100), country varchar(2), is_active boolean, created_at timestamptz NOT NULL ); CREATE TABLE products ( id int PRIMARY KEY, name varchar(100) NOT NULL, category varchar(50), price decimal(10,2) NOT NULL, in_stock BOOLEAN -- или int, потому что или на складе или не на складе ); CREATE TABLE orders ( id int PRIMARY KEY, user_id int, order_date timestamptz NOT NULL, status varchar(20) ); CREATE TABLE order_items ( order_id int, product_id int, quantity int NOT NULL, price_at_purchase decimal(10,2) NOT NULL, PRIMARY KEY (order_id, product_id) ); INSERT INTO pmikhailov.users (id, "name", age, email, country, is_active, created_at) VALUES (1, 'Alice', 25, 'alice@example.com', 'US', TRUE, '2024-01-10 10:00:00'), (2, 'Bob', 30, 'bob@example.com', 'UK', TRUE, '2024-02-05 09:30:00'), (3, 'Carol', 27, 'carol@example.com', 'US', FALSE, '2024-03-01 15:20:00'), (4, 'Diana', 22, 'diana@gmail.com', 'US', TRUE, '2024-01-12 08:15:00'), (5, 'Evan', 35, 'evan@example.com', 'UK', TRUE, '2024-01-18 19:40:00'), (6, 'Farida', 29, 'farida@example.com', 'KZ', TRUE, '2024-02-20 11:05:00'), (7, 'George', 31, 'george+test@example.com', 'US', TRUE, '2024-03-05 16:45:00'), (8, 'Helen', 24, NULL, 'UK', FALSE, '2024-03-06 08:20:00'), (9, 'Ivan', 26, 'ivan@example.com', 'RU', TRUE, '2024-01-11 14:30:00'), (10, 'Julia', 28, 'julia@example.com', 'US', TRUE, '2024-03-07 18:05:00'); INSERT INTO pmikhailov.products (id, "name", category, price, in_stock) VALUES (1, 'iPhone 15', 'Электроника', 80000, TRUE), (2, 'Kindle', 'Электроника', 15000, TRUE), (3, 'Кроссовки Nike', 'Одежда', 9000, TRUE), (4, 'Кроссовки NoName', 'Одежда', 3000, FALSE), (5, 'Наушники Pro', 'Электроника', 12000, TRUE), (6, 'Фитнес-браслет', 'Гаджеты', 6000, TRUE), (7, 'Подарочная карта', 'Сервисы', 1000, TRUE); INSERT INTO pmikhailov.orders (id, user_id, order_date, status) VALUES (1, 1, '2025-01-10 12:00:00', 'paid'), (2, 3, '2025-01-12 09:30:00', 'cancelled'), (3, 1, '2025-01-15 18:20:00', 'paid'), (4, 2, '2025-01-20 11:05:00', 'created'), (5, 4, '2025-02-01 17:45:00', 'paid'), (6, 5, '2025-02-10 10:10:00', 'refunded'), (7, 7, '2025-03-01 09:00:00', 'paid'), (8, 9, '2025-03-05 19:30:00', 'paid'); INSERT INTO pmikhailov.order_items (order_id, product_id, quantity, price_at_purchase) VALUES (1, 1, 1, 78000), (1, 3, 2, 8500), (2, 2, 1, 14000), (3, 5, 1, 11000), (3, 7, 1, 1000), (4, 2, 1, 15000), (5, 6, 1, 6000), (6, 1, 1, 82000), (7, 3, 1, 9000), (8, 4, 2, 2800); SELECT id, name, country, created_at, email FROM users ORDER BY created_at DESC, name ASC; SELECT id, name, country FROM users WHERE country = 'US' ORDER BY name ASC; SELECT id, name, country FROM users WHERE country = 'UK' ORDER BY name ASC; SELECT id, name, email FROM users u WHERE email IS NOT NULL ORDER BY name ASC; SELECT DISTINCT lower(email) FROM users u WHERE email IS NOT null; SELECT id, name, created_at FROM users WHERE created_at >= '2024-02-05 09:30:00.000 +0100' ORDER BY created_at DESC LIMIT 2 OFFSET 1; /* Задача 1 */ SELECT name, category, price, price * 1.3 AS price_with_markup, price * 1.5 AS price_with_vat FROM products p WHERE in_stock IS TRUE AND price BETWEEN 100 AND 1300; /* Задача 2 */ SELECT name, price, price * 0.85 AS price_with_discount FROM products p WHERE (price <= 100) OR (price >= 1000); /* Задача 3 */ SELECT id, name, category, price FROM products p WHERE category IN ('tablet', 'smartphone', 'mouse') AND price >= 100; /* Задача 4 */ SELECT name, category, price FROM products p WHERE name NOT ILIKE '%iPhone%'; /* Задача 5 */ SELECT name, category, price FROM products p WHERE name NOT ILIKE '%pro%' ORDER BY price DESC; SELECT name, category, price FROM products p WHERE name NOT ILIKE '%mx%'; ORDER BY price DESC;