按季度和年份进行SQL分组

时间:2018-01-22 20:14:52

标签: mysql sql

我正在开展一个至少对我来说有点有趣的项目......现在我有了这段代码。虽然这是有效的,但我想提出的是2016年全年和2017年的季度爆发。

SELECT account_id,
  quarter, revenue,
  sum(case when quarter like '%2016' then revenue else 0 end) as rev2016
FROM prescreen
GROUP BY quarter
ORDER BY rev2016 desc ;

我所看到的是

account_id .   quarter .   revenue .   rev2016
         1     Q4-2016 .        600 .      600
         1     Q1-2016          500 .      500
         1     Q2-2016          400        400
         1     Q3-2016          350 .      350
         1     Q1-2017         1000 .      0
         1     Q2-2017 .        650 .      0
         1     Q3-2017          890 .      0

我希望看到的预期输出更像是

account_id .   rev2016 .   Q1-2017 .   Q2-2017 .   Q3-2017
1 .            1850 .      1000 .       650 .       890

我还可以尝试获得一行结果吗?

1 个答案:

答案 0 :(得分:1)

在MySQL中,您通常通过执行条件聚合来实现:

SELECT account_id,
       (case when quarter like '2016%' then revenue else 0 end) as rev_2016,
       (case when quarter like 'Q1-2017' then revenue else 0 end) as rev_2017Q1,
       . . .
FROM prescreen
GROUP BY account_id;