MySQL中计算环比、同比(年、月、季度)

您所在的位置:网站首页 同期相比怎么计算 MySQL中计算环比、同比(年、月、季度)

MySQL中计算环比、同比(年、月、季度)

2024-06-14 05:46| 来源: 网络整理| 查看: 265

在MySQL中,我们可以使用日期函数和SQL查询技巧来计算环比和同比。环比是指与上一周期相比的增长率,同比是指与去年同期相比的增长率。下面我们将分别介绍如何计算年、月和季度的环比和同比。

一、年环比增长率和同比增长率

年环比增长率的计算公式为:(本年度数据 - 上一年度数据) / 上一年度数据 * 100%。在MySQL中,可以使用DATE_SUB()函数来获取上一年度的数据。 SELECT (SUM(sales) - SUM(DATE_SUB(date, INTERVAL 1 YEAR) OVER (PARTITION BY year ORDER BY date))) / SUM(DATE_SUB(date, INTERVAL 1 YEAR) OVER (PARTITION BY year ORDER BY date)) * 100 AS year_growth_rateFROM sales_table; 年同比增长率的计算公式为:(本年度数据 / 上一年度数据 - 1) * 100%。在MySQL中,可以使用CASE WHEN语句来区分本年度和上一年度的数据。 SELECT SUM(CASE WHEN year = YEAR(CURRENT_DATE) THEN sales ELSE 0 END) AS current_year_sales, SUM(CASE WHEN year = YEAR(DATE_SUB(CURRENT_DATE, INTERVAL 1 YEAR)) THEN sales ELSE 0 END) AS last_year_sales, ((current_year_sales - last_year_sales) / last_year_sales) * 100 AS year_growth_rateFROM sales_table;

二、月环比增长率和同比增长率

月环比增长率的计算公式为:(本月数据 - 上月数据) / 上月数据 * 100%。在MySQL中,可以使用LAG()函数来获取上月的同期数据。 SELECT (SUM(sales) - LAG(SUM(sales), 1) OVER (ORDER BY date)) / LAG(SUM(sales), 1) OVER (ORDER BY date) * 100 AS month_growth_rateFROM sales_table; 月同比增长率的计算公式为:(本月数据 / 上月数据 - 1) * 100%。在MySQL中,可以使用LAG()函数和CASE WHEN语句来区分本月和上月的同期数据。 SELECT SUM(CASE WHEN month = MONTH(CURRENT_DATE) THEN sales ELSE 0 END) AS current_month_sales, SUM(CASE WHEN month = MONTH(DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)) THEN sales ELSE 0 END) AS last_month_sales, ((current_month_sales - last_month_sales) / last_month_sales) * 100 AS month_growth_rateFROM sales_table;

三、季度环比增长率和同比增长率

季度环比增长率的计算公式为:(本季度数据 - 上季度数据) / 上季度数据 * 100%。在MySQL中,可以使用DATE_SUB()函数和QUARTER()函数来获取上季度的同期数据。 SELECT (SUM(sales) - SUM(DATE_SUB(date, INTERVAL QUARTER(date) - 1 QUARTER) OVER (ORDER BY date))) / SUM(DATE_SUB(date, INTERVAL QUARTER(date) - 1 QUARTER) OVER (ORDER BY date)) * 100 AS quarter_growth_rateFROM sales_table; 季度同比增长率的计算公式为:(本季度数据 / 上季度数据 - 1) * 100%。在MySQL中,可以使用CASE WHEN语句和QUARTER()函数来区分本季度和上季度的同期数据。

```sqlSELECT SUM(CASE WHEN quarter = QUARTER(CURRENT_DATE) THEN sales ELSE 0 END) AS current_quarter_sales, SUM(CASE WHEN quarter = QUARTER(DATE_SUB(CURRENT_DATE, INTERVAL 1 QUARTER)) THEN sales ELSE 0 END) AS last_quarter_sales,



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3