我的输入表有每年属于特定类别的事件值计数。
<表类>
事件年类别 tbody><<tr>16 2022 132022 B 3 2022 C 113 2022 D1 12022 D2 22022 D3 52023 82023 B 表类>
这是一个旋转任务的情况。
在您的特定情况下,CASE
表达式帮助您收集要汇总的特定事件计数,然后您可以根据year_值进行汇总。您可以使用LIKE
操作符检测D值。
SELECT year_,
SUM(events_) AS events_total,
SUM(CASE WHEN category = 'A' THEN events_ ELSE 0 END) AS categoryA,
SUM(CASE WHEN category = 'B' THEN events_ ELSE 0 END) AS categoryB,
SUM(CASE WHEN category = 'C' THEN events_ ELSE 0 END) AS categoryC,
SUM(CASE WHEN category LIKE 'D%' THEN events_ ELSE 0 END) AS categoryD
FROM tab
GROUP BY year_
点击这里查看演示。
使用FILTER
运算符,结合COALESCE
函数,将得到如下结果:
SELECT year_,
SUM(events_) AS events_total,
COALESCE(SUM(events_) FILTER(WHERE category = 'A' ), 0) AS catA,
COALESCE(SUM(events_) FILTER(WHERE category = 'B' ), 0) AS catB,
COALESCE(SUM(events_) FILTER(WHERE category = 'C' ), 0) AS catC,
COALESCE(SUM(events_) FILTER(WHERE category LIKE 'D%'), 0) AS catD
FROM tab
GROUP BY year_
点击这里查看演示。