Напиши SQL-запрос для выборки 5 самых популярных товаров из таблицы orders за последний квартал.

Для выборки 5 самых популярных товаров из таблицы orders за последний квартал можно использовать следующий SQL-запрос:

sql
SELECT
product_id,
product_name,
SUM(quantity) AS total_quantity,
COUNT(order_id) AS order_count
FROM orders
WHERE order_date >= DATE_TRUNC(‘quarter’, CURRENT_DATE) — INTERVAL ‘3 months’
AND order_date < DATE_TRUNC('quarter', CURRENT_DATE)
GROUP BY product_id, product_name
ORDER BY total_quantity DESC
LIMIT 5;

**Пояснение к запросу:**

1. **SELECT** — выбираем идентификатор товара, его название, суммарное количество проданных единиц и количество заказов, в которых он встречался.
2. **FROM orders** — источник данных — таблица заказов.
3. **WHERE** — фильтрация по дате: берём записи, где `order_date` попадает в предыдущий квартал. `DATE_TRUNC('quarter', CURRENT_DATE)` возвращает первый день текущего квартала, а вычитание `INTERVAL '3 months'` даёт начало предыдущего квартала.
4. **GROUP BY** — группируем по товару, чтобы агрегировать данные.
5. **ORDER BY total_quantity DESC** — сортируем по убыванию суммарного количества продаж.
6. **LIMIT 5** — ограничиваем результат пятью записями.

**Адаптация для разных СУБД:**

— **MySQL:** вместо `DATE_TRUNC` используйте `QUARTER(order_date) = QUARTER(DATE_SUB(CURDATE(), INTERVAL 1 QUARTER))`.
— **SQL Server:** используйте `DATEPART(QUARTER, order_date)` и `DATEADD`.
— **SQLite:** используйте `strftime` для работы с датами.

**Строка для CSV:**

product_id,product_name,total_quantity,order_count

Пример результирующей строки данных:

101,"Ноутбук Lenovo IdeaPad",320,215

**Советы по оптимизации:**
— Убедитесь, что на колонке `order_date` создан индекс — это существенно ускорит фильтрацию по большим таблицам.
— Если таблица содержит отменённые заказы, добавьте условие `AND status = 'completed'` для учёта только завершённых продаж.
— Если один заказ может содержать несколько позиций, убедитесь, что структура таблицы это отражает, или используйте JOIN с таблицей `order_items`.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.