mysql 环比 同比_MySQL统计同比环比SQL
时间: 2023-08-05 10:04:58 浏览: 184
好的,针对你的问题,我可以提供如下MySQL统计同比环比SQL的参考代码:
```mysql
-- 环比查询
SELECT t1.date, t1.value, t1.value - t2.value AS mom
FROM my_table t1
LEFT JOIN my_table t2
ON t1.date = DATE_SUB(t2.date, INTERVAL 1 MONTH)
ORDER BY t1.date;
-- 同比查询
SELECT t1.date, t1.value, t1.value - t2.value AS yoy
FROM my_table t1
LEFT JOIN my_table t2
ON t1.date = DATE_SUB(t2.date, INTERVAL 1 YEAR)
ORDER BY t1.date;
```
其中,my_table为你要进行统计的数据表,date为统计日期,value为具体的统计值。以上查询语句分别实现了同比和环比的统计,你可以根据实际情况进行调整和修改。
相关问题
MySQL环比同比实例
假设我们有一个销售数据表,其中包含了每个月的销售额。为了计算MySQL环比同比,我们可以使用以下SQL语句:
环比增长率:
```
SELECT (current_month_sales - last_month_sales) / last_month_sales * 100 AS growth_rate
FROM sales
WHERE month = 'current_month'
```
同比增长率:
```
SELECT (current_month_sales - last_year_same_month_sales) / last_year_same_month_sales * 100 AS growth_rate
FROM sales
WHERE month = 'current_month'
```
其中,`current_month_sales`表示本月销售额,`last_month_sales`表示上个月的销售额,`last_year_same_month_sales`表示去年同月的销售额。通过比较不同时间段的销售额,我们可以计算出MySQL环比同比增长率。
mysql 查询月度同环比
查询月度同环比的 SQL 语句如下:
```sql
SELECT
DATE_FORMAT(date, '%Y-%m') AS month,
SUM(IF(DATE_FORMAT(date, '%Y-%m') = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'), amount, 0)) AS last_month,
SUM(IF(DATE_FORMAT(date, '%Y-%m') = DATE_FORMAT(CURDATE() - INTERVAL 12 MONTH, '%Y-%m'), amount, 0)) AS last_year,
SUM(amount) AS current_month,
ROUND((SUM(amount) - SUM(IF(DATE_FORMAT(date, '%Y-%m') = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'), amount, 0))) / SUM(IF(DATE_FORMAT(date, '%Y-%m') = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'), amount, 0)), 2) AS mom,
ROUND((SUM(amount) - SUM(IF(DATE_FORMAT(date, '%Y-%m') = DATE_FORMAT(CURDATE() - INTERVAL 12 MONTH, '%Y-%m'), amount, 0))) / SUM(IF(DATE_FORMAT(date, '%Y-%m') = DATE_FORMAT(CURDATE() - INTERVAL 12 MONTH, '%Y-%m'), amount, 0)), 2) AS yoy
FROM
table_name
WHERE
DATE_FORMAT(date, '%Y-%m') BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 12 MONTH, '%Y-%m') AND DATE_FORMAT(CURDATE(), '%Y-%m')
GROUP BY
DATE_FORMAT(date, '%Y-%m')
```
解释:
1. 使用 `DATE_FORMAT` 函数将日期格式化为年月格式;
2. 使用 `SUM` 函数计算每个月的总金额;
3. 使用 `IF` 函数过滤出上个月和去年同月的金额;
4. 计算月度同比和环比,使用 `ROUND` 函数保留两位小数;
5. 使用 `GROUP BY` 按月份分组。
其中,`table_name` 为表名,`date` 为日期列名,`amount` 为金额列名。
阅读全文