0
私の会社は一連のテレビ広告を実行し、ウェブサイトのトラフィックの変化による影響を測定しています。各広告の費用に基づいて、私が見たセッションあたりの費用を決定したいと思います。複数の一意の識別子を使用して異なるSQLカウント
問題は、これは参照しているテーブルに重複データがあるため、現在cost_per_sessionは正しくカウントされていません。
私がこれまで持っている:
- は、広告の =コストをclient_net_cleared
- ad_time、media_outlet、&プログラム =複合各広告
- 差分の一意の識別子です =広告によって生成された想定セッション
。
SELECT DISTINCT tadm.timestamp AS ad_time
, tadm.media_outlet AS media_outlet
, tadm.program AS program
, tadm.client_net_cleared AS client_net_cleared
, SUM(tadm.before_ad_sum) AS before_ad_sessions
, SUM(tadm.after_ad_sum) AS after_ad_sessions
, (SUM(tadm.after_ad_sum) - SUM(tadm.before_ad_sum)) AS diff
, CASE WHEN tadm.client_net_cleared = 0 THEN null
WHEN (SUM(tadm.after_ad_sum) - SUM(tadm.before_ad_sum)) <1 THEN null
ELSE (tadm.client_net_cleared/(SUM(tadm.after_ad_sum) - SUM(tadm.before_ad_sum)))
END AS cost_per_session
FROM tableau.km_tv_ad_data_merged tadm
GROUP BY ad_time,media_outlet,program,client_net_cleared
サンプルデータ:
ad_time | media_outlet | program | client_net_cleared | before_ad_sessions | after_add_sessions | diff | cost_per_session
---------------------|---------------|----------------|--------------------|--------------------|--------------------|------|-----------------
2016-12-09 22:55:00 | DIY | | 970 | 55 | 72 | 17 | 57.05
2016-12-11 02:22:00 | E! | E! News | 388 | 25 | 31 | 6 | 64.66
2016-12-19 21:15:00 | Cooking | The Best Thing | 428 | 70 | 97 | 27 | 15.85
2016-12-22 14:01:00 | Oxygen | Next Top Model | 285 | 95 | 148 | 53 | 5.37
2016-12-09 22:55:00 | DIY | | 970 | 55 | 72 | 17 | 57.05
2016-12-04 16:13:00 | Headline News | United Shades | 1698 | 95 | 137 | 42 | 40.42
私は必要なもの:cost_per_sessionを計算するとき のみ各広告の1つのインスタンスをカウントします。
EDIT:質問を修正しましたが、質問をする前にこれをやっていないところで半分の完成した行がありました。 :)
と
を置き換えることによって、あなたは
GROUP BY
グラインダーに入れて前にテーブルを重複除外してくださいしてみてくださいいくつかの行を表示するには、[編集]あなたの質問入力データと所望の結果セットとの比較を行う。テーブル内の行は、(すべての列で)重複しているか、またはいくつかの列で異なるのですか? –良い点!サンプルデータを提供しました。テーブルには、完全な重複列があり、列に違いはありません。 – Minadorae