写一个查询的sql语句计算同比环比
时间: 2023-05-20 22:01:48 浏览: 146
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语句计算同比环比
计算同比和环比需要使用SQL中的聚合函数和窗口函数。
同比计算公式为:(本期数-同期数)/同期数
环比计算公式为:(本期数-上期数)/上期数
假设我们有一个销售数据表sales,包含字段date、sales_volume。
同比计算可以使用如下SQL语句:
```
SELECT
date,
(SUM(CASE WHEN YEAR(date) = 2021 THEN sales_volume ELSE 0 END) - SUM(CASE WHEN YEAR(date) = 2020 THEN sales_volume ELSE 0 END)) / SUM(CASE WHEN YEAR(date) = 2020 THEN sales_volume ELSE 0 END) AS yoy
FROM
sales
GROUP BY
date
```
其中,SUM(CASE WHEN YEAR(date) = 2021 THEN sales_volume ELSE 0 END)表示2021年的销售总额,SUM(CASE WHEN YEAR(date) = 2020 THEN sales_volume ELSE 0 END)表示2020年的销售总额。
环比计算可以使用如下SQL语句:
```
SELECT
date,
(sales_volume - LAG(sales_volume) OVER (ORDER BY date)) / LAG(sales_volume) OVER (ORDER BY date) AS mom
FROM
sales
```
其中,LAG(sales_volume) OVER (ORDER BY date)表示取上一期的销售总额。
写一个SQL同比环比查询
我可以为您提供一个同比环比查询的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;
阅读全文