プレースメントによって生成された収益を表示しようとしています。プレースメントの収益を計算するには、この計算(プレースメントによって生成されたcampaign_cpc(*)単位のクリック数)を行う必要があります。 1つのプレースメントで異なる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)は、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
どのように集計結果を得るために、上記のクエリを修正することができます? GCCのgccのコンパイルによって、私はi686の-pc-linux-gnuのようでPostgreSQL 8.0.2を使用しています
、(GCC)3.4.2 20041017(Red Hatの3.4.2-6.fc3)、赤方偏移1.0.1337
多くの感謝!
現在、あなたは 'クリック 'でグループ化していますが、この名前のフィールドはありません(フィールド'クリック'があります)。また、 'click'の後のカンマはSQLではありません。だから質問には何か正確ではない。基本的に、@ JoshKopenには正しい修正がありますが、おそらく問題は異なります。実際の出力からコピー貼りを使用するだけです。これは高速です。 –
@DanGetzあなたの答えをありがとう。私はちょうどクリック事を訂正しました。これは、投稿する前に手動でクエリを凝縮したため、読みやすく(元のクエリには多くの種類のクリックイベントがあります)私はまだ同じ結果を見ています。他のアイデア?もう一度ありがとう! – Henry
@JoshKopenと同様に、第2(外側)のGROUP BYから 'clicks'を削除し、' campaign_cpc * clicks'の周りに 'SUM()'を追加してください。しかし、おそらくあなたは答えを凝縮して何かを追加しています。 –