我正在尝试获得显示展示位置产生的收入的结果。要计算展示位置收入,我需要执行此计算(campaign_cpc(€)*由展示位置生成的点击次数)。一个展示位置可以使用不同的campaign_cpc生成点击次数。
现在我得到的结果是这样的:
+------------------+---------------------+
| placement_name | placement_revenue_€ |
+------------------+---------------------+
| placement_name_1 | 147,2 |
+------------------+---------------------+
| placement_name_1 | 170,95 |
+------------------+---------------------+
| placement_name_2 | 14,4 |
+------------------+---------------------+
| placement_name_2 | 51,35 |
+------------------+---------------------+
这是因为每个展示位置(展示位置1和2)都使用两个不同的campaign_cpc生成了点击次数。
但实际上我需要按展示位置汇总的结果:
+------------------+---------------------+
| placement_name | placement_revenue_€ |
+------------------+---------------------+
| placement_name_1 | 318,15 |
+------------------+---------------------+
| placement_name_2 | 65,75 |
+------------------+---------------------+
我正在使用的查询就是这个:
SELECT
placement_name,
campaign_cpc*clicks as placement_revenue_€
FROM (
SELECT
p.name as placement_name,
cc.cpc as campaign_cpc,
COUNT(CASE WHEN re.event_type = 'click'
AND content_card_id IS NOT NULL THEN event_type END) as clicks
FROM raw_events re
JOIN app_data.placements p ON p.id=re.placement_id
JOIN app_data.content_cards cc ON cc.id=re.content_card_id
GROUP BY
cc.cpc,
p.name
)
GROUP BY
placement_name,
clicks
ORDER BY
placement_name
如何修改上述查询以获得汇总结果?
我在i686-pc-linux-gnu上使用PostgreSQL 8.0.2,由GCC gcc(GCC)3.4.2 20041017(Red Hat 3.4.2-6.fc3)编译,Redshift 1.0.1337
非常感谢!
答案 0 :(得分:1)
修复语句以获得所需结果的方法是不按分组进行分组。仅按placement_name分组。这将不再区分具有不同点击次数的行,因此您的求和将正常工作。还要在select语句中点击总和。