History course for people who are interested in art
- Группируйте по DATE_FORMAT(order_date, '%Y-%m') и product_name
- Для ранжирования используйте RANK() OVER (PARTITION BY month ORDER BY total_sold DESC)
- Фильтруйте по rank_in_month <= 2
WITH sales_per_month AS (
SELECT
DATE_FORMAT(oi.order_date, '%Y-%m') AS month_period,
p.product_name,
SUM(oi.quantity) AS total_quantity_sold
FROM products p
JOIN order_items oi
ON p.product_id = oi.product_id
GROUP BY
month_period,
p.product_name
), ranked_sales AS (
SELECT
*,
RANK() OVER (PARTITION BY month_period ORDER BY total_quantity_sold DESC) AS monthly_rank FROM sales_per_month
)
SELECT
month_period,
product_name,
total_quantity_sold,
monthly_rank
FROM ranked_sales
WHERE monthly_rank