Сравнение текущих и предыдущих продаж в SQL: методы и примеры

Анализ данных о продажах имеет решающее значение для компаний, позволяющих оценивать эффективность и принимать обоснованные решения. Одной из распространенных задач является сравнение текущих продаж с предыдущими продажами для выявления тенденций и измерения роста или спада. В этой статье блога мы рассмотрим несколько методов достижения этой цели с помощью SQL-запросов. Для лучшего понимания каждый метод будет сопровождаться примерами кода.

Метод 1. Использование самообъединений
Один из способов сравнить текущие и предыдущие продажи — выполнить самообъединение в таблице продаж. Соединив таблицу сама с собой, мы можем сравнить записи о продажах по дате или любому другому соответствующему критерию.

SELECT 
    current_sales.sale_date,
    current_sales.amount AS current_sale,
    previous_sales.amount AS previous_sale
FROM 
    sales AS current_sales
LEFT JOIN 
    sales AS previous_sales 
    ON current_sales.sale_date = previous_sales.sale_date - INTERVAL 1 YEAR

Метод 2: использование подзапросов.
Другой подход заключается в использовании подзапросов для получения предыдущих данных о продажах. Мы можем написать подзапрос, чтобы получить максимальную дату до текущей даты продажи, а затем объединить его с таблицей продаж.

SELECT 
    current_sales.sale_date,
    current_sales.amount AS current_sale,
    previous_sales.amount AS previous_sale
FROM 
    sales AS current_sales
LEFT JOIN 
    (
        SELECT 
            amount,
            sale_date
        FROM 
            sales 
        WHERE 
            sale_date < current_sales.sale_date 
        ORDER BY 
            sale_date DESC 
        LIMIT 1
    ) AS previous_sales 
    ON 1=1

Метод 3: использование оконных функций
Оконные функции предоставляют мощный способ сравнения текущих и предыдущих продаж в рамках одного запроса. Мы можем использовать функцию LAG() для получения предыдущей суммы продажи на основе определенного порядка.

SELECT 
    sale_date,
    amount AS current_sale,
    LAG(amount) OVER (ORDER BY sale_date) AS previous_sale
FROM 
    sales

Сравнение текущих и предыдущих продаж с помощью SQL важно для бизнеса, чтобы проанализировать свою эффективность с течением времени. В этой статье мы рассмотрели три различных метода: использование самообъединений, подзапросов и оконных функций. Каждый метод имеет свои преимущества и может подойти в зависимости от конкретных требований и структуры базы данных. Используя эти методы, компании могут получить ценную информацию о тенденциях продаж и принимать решения на основе данных.