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

例如:

  • Q1(一月至三月) claim = 200
  • Q2(四月至六月) claim = 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;
    

    但不会以正确的形式显示输出。它显示给定时间段内每个日期的记录。我该如何解决查询?

    最佳答案

    在原始查询中,您将混合(即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
    

    关于mysql - 计算两个时期之间的增长率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31981133/

    10-12 05:37