我試圖讓顯示由一個放置產生的收益結果相同值的行。要計算展示位置收入,我需要進行此計算(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',它應該這樣做。但是也許你對這個答案並不感冒,並且增加了一些東西。 –