2017-06-16 52 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