要根据产品名称分组并筛选出1年内的同比销售数据,你可以使用SQL查询来实现这一目标。以下是一个示例SQL查询,假设你的销售数据存储在名为sales
的表中,并且该表包含以下列:product_name
(产品名称)、sale_date
(销售日期)和sales_amount
(销售金额)。
SELECT
product_name,
SUM(sales_amount) AS total_sales,
LAG(SUM(sales_amount)) OVER (PARTITION BY product_name ORDER BY DATE_FORMAT(sale_date, '%Y-%m')) AS prev_year_sales,
SUM(sales_amount) - LAG(SUM(sales_amount)) OVER (PARTITION BY product_name ORDER BY DATE_FORMAT(sale_date, '%Y-%m')) AS year_on_year_growth
FROM
sales
WHERE
sale_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND CURDATE()
GROUP BY
product_name,
YEAR(sale_date)
ORDER BY
product_name,
YEAR(sale_date);
product_name
: 产品名称。SUM(sales_amount) AS total_sales
: 计算每个产品每年的总销售额。LAG(SUM(sales_amount)) OVER (PARTITION BY product_name ORDER BY DATE_FORMAT(sale_date, '%Y-%m')) AS prev_year_sales
: 使用窗口函数LAG
获取前一年的销售额。SUM(sales_amount) - LAG(SUM(sales_amount)) OVER (PARTITION BY product_name ORDER BY DATE_FORMAT(sale_date, '%Y-%m')) AS year_on_year_growth
: 计算同比销售增长。WHERE sale_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND CURDATE()
: 只选择过去一年内的销售数据。GROUP BY product_name, YEAR(sale_date)
: 按产品名称和年份分组。ORDER BY product_name, YEAR(sale_date)
: 按产品名称和年份排序。LAG
)。领取专属 10元无门槛券
手把手带您无忧上云