sql题,求每个月商品销售额的同环比
时间: 2024-02-18 08:14:29 浏览: 176
好的,那我们假设有一个销售表 sales,其中包含以下字段:
- id:销售记录的唯一标识符
- product_id:商品的唯一标识符
- sale_date:销售日期,格式为 YYYY-MM-DD
- sale_amount:销售金额
我们可以使用如下 SQL 语句来查询每个月商品的销售额同环比:
```sql
SELECT
DATE_FORMAT(s1.sale_date, '%Y-%m') AS month,
SUM(s1.sale_amount) AS current_month_sales,
SUM(s2.sale_amount) AS last_month_sales,
SUM(s1.sale_amount) / SUM(s2.sale_amount) - 1 AS mom_growth_rate,
SUM(s1.sale_amount) / SUM(s3.sale_amount) - 1 AS yoy_growth_rate
FROM
sales s1
LEFT JOIN sales s2 ON DATE_FORMAT(s1.sale_date, '%Y-%m') = DATE_FORMAT(DATE_SUB(s2.sale_date, INTERVAL 1 MONTH), '%Y-%m') AND s1.product_id = s2.product_id
LEFT JOIN sales s3 ON DATE_FORMAT(s1.sale_date, '%Y-%m') = DATE_FORMAT(DATE_SUB(s3.sale_date, INTERVAL 1 YEAR), '%Y-%m') AND s1.product_id = s3.product_id
GROUP BY
DATE_FORMAT(s1.sale_date, '%Y-%m')
```
这个 SQL 语句使用了三个子查询,分别对应当前月、上月和去年同期的销售数据。通过 LEFT JOIN 连接这三个子查询,我们可以得到每个月的销售额、上月销售额、去年同期销售额,以及同环比增长率。其中,同比增长率计算方式为 `(当前月销售额 / 去年同期销售额) - 1`,环比增长率计算方式为 `(当前月销售额 / 上月销售额) - 1`。最后,我们使用 DATE_FORMAT 函数将销售日期格式化为年月,然后按月份分组,即可得到每个月的同环比销售数据。
阅读全文