Вот SQL-запросы для всех 10 заданий на основе структуры таблиц из вашего практического задания.
Перед написанием самих запросов, на всякий случай, добавлю код для создания базы данных и таблиц, чтобы вам было проще все развернуть. Если база уже создана, можете сразу переходить к разделу **«Решение заданий»**.
## Подготовка: Создание БД и таблиц
```sql
-- Создание базы данных
CREATE DATABASE online_store;
USE online_store;
-- Создание таблицы товаров
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
category VARCHAR(100),
stock INT DEFAULT 0
);
-- Создание таблицы клиентов
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255),
city VARCHAR(100)
);
-- Создание таблицы заказов
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
product_id INT,
quantity INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
```
## Решение заданий (SQL-запросы)
### 1. Вывести все товары дороже 1000 рублей.
```sql
SELECT * FROM products
WHERE price > 1000;
```
### 2. Вывести товары из категории "Электроника" в наличии (stock > 0).
```sql
SELECT * FROM products
WHERE category = 'Электроника' AND stock > 0;
```
### 3. Вывести заказы, сделанные после 1 января 2023 года.
```sql
SELECT * FROM orders
WHERE order_date > '2023-01-01';
```
### 4. Вывести клиентов из Москвы или Санкт-Петербурга.
```sql
SELECT * FROM customers
WHERE city IN ('Москва', 'Санкт-Петербург');
```
### 5. Вывести топ-5 самых дорогих товаров.
```sql
SELECT * FROM products
ORDER BY price DESC
LIMIT 5;
```
### 6. Вывести все заказы, отсортированные по дате (новые сначала).
```sql
SELECT * FROM orders
ORDER BY order_date DESC;
```
### 7. Вывести товары, в названии которых есть слово "Смартфон".
```sql
SELECT * FROM products
WHERE name LIKE '%Смартфон%';
```
### 8. Вывести клиентов, у которых email заканчивается на @gmail.com.
```sql
SELECT * FROM customers
WHERE email LIKE '%@gmail.com';
```
### 9. Вывести товары с ценой от 500 до 2000 рублей, отсортированные по категории.
```sql
SELECT * FROM products
WHERE price BETWEEN 500 AND 2000
ORDER BY category;
```
### 10. Вывести количество товаров в каждой категории (используйте GROUP BY).
```sql
SELECT category, COUNT(*) AS product_count
FROM products
GROUP BY category;
```