我的数据格式如下:
Date All_impressions Id2_Impressions
1-Jan 135 45
2-Jan 375 135
我希望结果为:
SELECT DATE,
SUM(Impressions) AS All_impressions
, CASE WHEN id=2 SUM(impressions) ELSE 0
END as Id2_Impressions
GROUP BY DATE,id
我尝试过:
{{1}}
这并没有显示我想要的方式。 我能做些什么不同?
答案 0 :(得分:0)
你很亲密。条件聚合的正确语法是:
SELECT DATE,
SUM(Impressions) AS All_impressions,
SUM(CASE WHEN id = 2 THEN impressions ELSE 0 END) as Id2_Impressions
FROM ??
GROUP BY DATE
ORDER BY DATE;
也就是说,CASE
表达式是SUM()
函数的参数。你还需要一个FROM
条款;我认为这只是一种疏忽。
我应该注意到更新版本的Postgres支持FILTER
子句。这可能比SUM(CASE)
更有效,但这不是你开始的路径。