首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

选择按产品名称分组的同比销售数据,确保只包含1年内的产品

要根据产品名称分组并筛选出1年内的同比销售数据,你可以使用SQL查询来实现这一目标。以下是一个示例SQL查询,假设你的销售数据存储在名为sales的表中,并且该表包含以下列:product_name(产品名称)、sale_date(销售日期)和sales_amount(销售金额)。

代码语言:javascript
复制
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);

解释:

  1. 选择列
    • 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: 计算同比销售增长。
  2. 过滤条件
    • WHERE sale_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND CURDATE(): 只选择过去一年内的销售数据。
  3. 分组和排序
    • GROUP BY product_name, YEAR(sale_date): 按产品名称和年份分组。
    • ORDER BY product_name, YEAR(sale_date): 按产品名称和年份排序。

注意事项:

  • 确保你的数据库支持窗口函数(如LAG)。
  • 根据你的实际表结构和字段名称调整查询。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券