我试图让显示由一个放置产生的收益结果相同值的行。要计算展示位置收入,我需要进行此计算(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(红帽3.4.2-6.fc3),红移1.0.1337
非常感谢!
目前你是'click'分组但没有场这个名字(有一个字段'clicks')。此外,'click'后的逗号将使其不是SQL。所以在这个问题上有些事情是不准确的。基本上,@JoshKopen有正确的解决方法,但问题可能不同。只需使用复制粘贴,从实际输出 - 它更快。 –
@DanGetz谢谢你的回答。我只是纠正了点击事件。这是因为我在发布之前手动压缩了查询,以便读取更容易(原始查询中有许多类型的点击事件)。我仍然看到相同的结果。任何其他想法?再次感谢你们! – Henry
像@JoshKopen说,请从第二(外)'集团BY'的'clicks'并添加'SUM()'周围的'campaign_cpc * clicks',它应该这样做。但是也许你对这个答案并不感冒,并且增加了一些东西。 –