2017-06-16 22 views
0

プレースメントによって生成された収益を表示しようとしています。プレースメントの収益を計算するには、この計算(プレースメントによって生成された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

多くの感謝!

+0

現在、あなたは 'クリック 'でグループ化していますが、この名前のフィールドはありません(フィールド'クリック'があります)。また、 'click'の後のカンマはSQLではありません。だから質問には何か正確ではない。基本的に、@ JoshKopenには正しい修正がありますが、おそらく問題は異なります。実際の出力からコピー貼りを使用するだけです。これは高速です。 –

+0

@DanGetzあなたの答えをありがとう。私はちょうどクリック事を訂正しました。これは、投稿する前に手動でクエリを凝縮したため、読みやすく(元のクエリには多くの種類のクリックイベントがあります)私はまだ同じ結果を見ています。他のアイデア?もう一度ありがとう! – Henry

+0

@JoshKopenと同様に、第2(外側)のGROUP BYから 'clicks'を削除し、' campaign_cpc * clicks'の周りに 'SUM()'を追加してください。しかし、おそらくあなたは答えを凝縮して何かを追加しています。 –

答えて

1

希望の結果を得るためにステートメントを修正する方法は、クリックしてもグループ化しないことです。 placement_nameでグループ化します。これにより、異なるクリックで行が区別されることがなくなり、合計が正しく機能します。また、selectステートメントのクリック数を合計します。

+0

素早い答えのためにジョシュに感謝します。私はちょうどそれを試みたが、残念なことにトリックをしない。私はまだ同じ結果を持っています。行えることが他にある場合は教えてください。どうもありがとうございました! – Henry

+0

SUMを乗算の上に置くことを試みてください。 – JoshKopen

+0

これも試しましたが、同じ結果が得られました。 – Henry

関連する問題