计算两个时期之间的增长率

Posted

技术标签:

【中文标题】计算两个时期之间的增长率【英文标题】:Calculating the Growth Percentage between two periods 【发布时间】:2015-08-13 06:38:41 【问题描述】:

我有一个包含单个投诉表和提交日期的数据库。 我要做的是,给定两个时期的开始和结束日期,我必须计算它们之间的增长百分比。

例如:

第一季度(1 月 - 3 月)索赔 = 200

第二季度(4 月 - 6 月)索赔 = 400

计算增长:

(现在 - 过去)/过去 * 100

增长百分比 = (400 - 200) / 200 * 100 = 100% 增长

我必须从该报告中提取的信息是索赔在第一季度和第二季度之间增长了 100%

这是我想出的:

SELECT 
  (SELECT COUNT(id) FROM complaints WHERE submit_date >= start_date_period_1 AND submit_date <= end_date_period_1) AS q1_claims,
  (SELECT COUNT(id) FROM complaints WHERE submit_date >= start_date_period_2 AND submit_date <= end_date_period_2) AS q2_claims,
  (SELECT ((q2_claims - q1_claims)/q2_claims * 100) AS 'Percentage Growth')
FROM complaints;

但没有以正确的形式显示输出。它显示给定期间每个日期的记录。如何修复查询?

【问题讨论】:

【参考方案1】:

在您的原始查询中,您混合了聚合(即COUNT)和非聚合列,迫使 mysql 为您提供一个包含每一行记录的结果集。请尝试改用此查询:

SELECT 
  ((q2.claims - q1.claims)/q2.claims * 100) AS 'Percentage Growth'
FROM 
    (SELECT COUNT(id) AS claims FROM complaints WHERE submit_date >= start_date_period_1 AND submit_date <= end_date_period_1) AS q1,
    (SELECT COUNT(id) AS claims FROM complaints WHERE submit_date >= start_date_period_2 AND submit_date <= end_date_period_2) AS q2

【讨论】:

我不知道您可以将 SELECT 语句放入 FROM!而且您的查询非常整洁。非常感谢。我会在时间限制后接受你的回答:)

以上是关于计算两个时期之间的增长率的主要内容,如果未能解决你的问题,请参考以下文章

商品价格变化两种描述方法

powerbi横向显示同比增长率

知识点归纳 | 时间序列

从两个不同的表计算增长百分比时除以零误差

日本的各种时期是怎么计算的?

搞定混合增长率