用sql写个同环比例子
时间: 2023-07-01 13:24:42 浏览: 192
WINCC读写SQL数据库的例子
5星 · 资源好评率100%
假设我们有一个销售表格,包含以下字段:日期(date)、销售额(sales),我们需要计算每个月的销售额的同比和环比。
同比指的是与上一年同一月份相比的增长率,环比指的是与上一个月相比的增长率。
我们可以使用 SQL 语句来计算同比和环比,具体如下:
同比:
```
SELECT
DATE_FORMAT(date, '%Y-%m') AS month,
SUM(sales) AS sales,
(SUM(sales) / SUM(CASE WHEN YEAR(date) = YEAR(NOW())-1 THEN sales END) - 1) * 100 AS YoY_growth_rate
FROM
sales
WHERE
YEAR(date) = YEAR(NOW()) OR YEAR(date) = YEAR(NOW())-1
GROUP BY
DATE_FORMAT(date, '%Y-%m')
ORDER BY
month DESC;
```
解释:
- 使用 `DATE_FORMAT` 函数将日期转换成年月格式。
- 使用 `SUM` 函数计算每个月的销售额总和。
- 使用条件语句 `CASE WHEN` 选择上一年同一月份的销售额。
- 计算同比增长率,公式为 `(本期销售额 / 同期销售额 - 1) * 100`。
- 使用 `GROUP BY` 按照年月分组。
- 使用 `ORDER BY` 按照年月倒序排序。
环比:
```
SELECT
DATE_FORMAT(date, '%Y-%m') AS month,
SUM(sales) AS sales,
(SUM(sales) / LAG(SUM(sales)) OVER (ORDER BY date) - 1) * 100 AS MoM_growth_rate
FROM
sales
WHERE
YEAR(date) = YEAR(NOW())
GROUP BY
DATE_FORMAT(date, '%Y-%m')
ORDER BY
month DESC;
```
解释:
- 使用 `DATE_FORMAT` 函数将日期转换成年月格式。
- 使用 `SUM` 函数计算每个月的销售额总和。
- 使用 `LAG` 函数选择上一个月的销售额。
- 计算环比增长率,公式为 `(本期销售额 / 上期销售额 - 1) * 100`。
- 使用 `GROUP BY` 按照年月分组。
- 使用 `ORDER BY` 按照年月倒序排序。
阅读全文