【问题标题】: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;

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

【问题讨论】:

    标签: mysql


    【解决方案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!而且您的查询非常整洁。非常感谢。我会在时间限制后接受你的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2012-01-31
    • 2023-01-26
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多