【问题标题】:MYSQL - get a row for each year, with total sum for each monthMYSQL - 每年获取一行,每个月的总和
【发布时间】:2012-01-22 11:38:15
【问题描述】:

我有一张购买交易表。每笔交易都有时间戳和购买金额(以美元为单位)。

我正在尝试从中创建一些统计信息。我想为每一年提取一行,其中包含一年中每个月的总和。 (我希望没有交易的月份总和为 0 - 不要省略。)

我知道我可以对所有内容进行简单的 SELECT 并在 PHP 中处理它,但我想知道是否有可能让 MySQL 完成工作并按我想要的方式提取数据?

我想看到的是这样的行:

Year, Total_Jan, Total_Feb, ... Total_Dec, Total_Year

我能够得到每年的总数,但我不知道如何将每月的总数放在同一行中。

SELECT
  YEAR(dt) as the_year,
  SUM(mc_gross) AS sum_total
FROM
  transactions
GROUP BY
  the_year

【问题讨论】:

    标签: mysql


    【解决方案1】:
    SELECT
      YEAR(dt) as the_year,
      SUM(CASE WHEN MONTH(dt) = 1 THEN mc_gross ELSE 0 END) AS Total_Jan,
      SUM(CASE WHEN MONTH(dt) = 2 THEN mc_gross ELSE 0 END) AS Total_Feb,
      ...
      SUM(CASE WHEN MONTH(dt) = 12 THEN mc_gross ELSE 0 END) AS Total_Dec
    FROM
      transactions
    GROUP BY
      the_year;
    

    【讨论】:

    • 完美!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多