2017-06-16 48 views
0

我试图让显示由一个放置产生的收益结果相同值的行。要计算展示位置收入,我需要进行此计算(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

非常感谢!

+0

目前你是'click'分组但没有场这个名字(有一个字段'clicks')。此外,'click'后的逗号将使其不是SQL。所以在这个问题上有些事情是不准确的。基本上,@JoshKopen有正确的解决方法,但问题可能不同。只需使用复制粘贴,从实际输出 - 它更快。 –

+0

@DanGetz谢谢你的回答。我只是纠正了点击事件。这是因为我在发布之前手动压缩了查询,以便读取更容易(原始查询中有许多类型的点击事件)。我仍然看到相同的结果。任何其他想法?再次感谢你们! – Henry

+0

像@JoshKopen说,请从第二(外)'集团BY'的'clicks'并添加'SUM()'周围的'campaign_cpc * clicks',它应该这样做。但是也许你对这个答案并不感冒,并且增加了一些东西。 –

回答

1

解决您的发言得到你想要的结果的方式是不被点击组为好。只根据placement_name进行分组。这将不再通过不同的点击来区分行,因此您的求和会正常工作。还请在您的选择声明中添加总和点击。

+0

非常感谢Josh的快速回答。我只是尝试过,但不幸的是,这并不能解决问题。我仍然有同样的结果。让我知道是否还有其他事情可以做。非常感谢你! – Henry

+0

尝试把SUM周围的点击次数相乘顶部 – JoshKopen

+0

只是去尝试过,但仍得到相同的结果。 – Henry