写一个SQL同比环比查询
时间: 2023-03-15 11:38:44 浏览: 179
我可以为您提供一个同比环比查询的SQL语句:SELECT a.*, b.value/a.value - 1 AS rate FROM (SELECT * FROM table WHERE date = '2020-01-01') a, (SELECT * FROM table WHERE date = '2019-01-01') b WHERE a.item_id = b.item_id;
相关问题
写一个查询的sql语句计算同比环比
SELECT a.year, a.month, a.sales, b.sales AS 'last_month_sales', (a.sales-b.sales)/b.sales AS 'YoY', (a.sales-c.sales)/c.sales AS 'MoM' FROM sales_table a LEFT JOIN sales_table b ON a.year=b.year AND a.month=b.month-1 LEFT JOIN sales_table c ON a.year=c.year AND a.month=c.month-1;
用sql写个同环比例子
假设我们有一个销售表格,包含以下字段:日期(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` 按照年月倒序排序。