Загрузка данных


CREATE TABLE users (
    id    INT            PRIMARY KEY,
    name  VARCHAR(100)   NOT NULL,
    email VARCHAR(100)   NOT NULL,
    phone VARCHAR(20)    NULL
);

CREATE TABLE products (
    id    INT              PRIMARY KEY,
    name  VARCHAR(100)     NOT NULL,
    price DECIMAL(10, 2)   NOT NULL CHECK (price >= 0)
);

CREATE TABLE orders (
    id          INT              PRIMARY KEY,
    user_id     INT              NOT NULL,
    product     VARCHAR(100)     NOT NULL,
    amount      INT              NOT NULL CHECK (amount > 0),
    price       DECIMAL(10, 2)   NOT NULL CHECK (price >= 0),
    order_date  DATE             NOT NULL,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

INSERT INTO users VALUES (1, 'Ivan Ivanov', 'ivan@mail.com', '12345');
INSERT INTO users VALUES (2, 'Petr Petrov', 'petr@mail.com', NULL);
INSERT INTO users VALUES (3, 'Anna', 'anna@mail.ru', '99999');

INSERT INTO products VALUES (1, 'Phone', 10000);
INSERT INTO products VALUES (2, 'Laptop', 50000);

INSERT INTO orders VALUES (1, 1, 'Phone',  1, 10000, '2024-01-10');
INSERT INTO orders VALUES (2, 1, 'Phone',  2, 10000, '2024-01-10');
INSERT INTO orders VALUES (4, 2, 'Laptop', 1, 50000, '2024-03-01');
INSERT INTO orders VALUES (5, 2, 'Laptop', 1, 50000, '2024-03-05');

SELECT users.name, orders.product
FROM users
JOIN orders ON users.id = orders.user_id;

SELECT SUM(price * amount) AS total_revenue
FROM orders;

SELECT *
FROM orders
WHERE user_id = (SELECT id FROM users WHERE name = 'Ivan Ivanov');

SELECT name
FROM users
WHERE id NOT IN (SELECT user_id FROM orders);

SELECT product, AVG(price) AS avg_price
FROM orders
GROUP BY product;