2017-12-14 3 views
0

この問題に関するいくつかのトピックを読みましたが、私のコードでこのソリューションを使用する方法が見つかりませんでした。私が理解していることから、私は間違った結合をしています。SUMに行数を掛けたもの(結合によるクエリ)

Hubspot CRMには、AdWordsキャンペーンとしてマークされたソースを持つ連絡先がたくさんあります。このキャンペーンの広告の費用を生成されたリード数で割ることで、リード獲得の費用を計算したいと考えています。

問題は、広告に費やされた合計に、指定されたキャンペーンのリード数が乗算されていることです。

SELECT Sum("adwords"."adwords"."adcost")       AS 
     "sum", 
     "adwords"."adwords"."campaign"        AS 
     "campaign", 
     Count(DISTINCT "hubspot_stitch"."contacts"."properties__email__value") AS 
     "Leads", 
     Sum("adwords"."adwords"."adcost")/Count(DISTINCT 
     "hubspot_stitch"."contacts"."properties__email__value")    AS 
     "Cost Per Acquisition" 
FROM "adwords"."adwords" 
     INNER JOIN "hubspot_stitch"."contacts" 
       ON Lower("adwords"."adwords"."campaign") = 
"hubspot_stitch"."contacts"."properties__hs_analytics_source_data_1__value" 
AND (( 
"hubspot_stitch"."contacts"."properties__hs_analytics_source_data_2__value" 
     LIKE 
     'sales_adwords%') 
      AND ( 
    "hubspot_stitch"."contacts"."properties__lifecyclestage__value" = 
    'opportunity' 
    OR "hubspot_stitch"."contacts"."properties__lifecyclestage__value" 
     = 
     'customer')) 
GROUP BY "adwords"."adwords"."campaign" 
ORDER BY "adwords"."adwords"."campaign" ASC 

これは私が(私の仕事を失わないために実施例番号)を受信結果である:

Sum  | Campaign  | Leads | Cost Per Acquisition 
700,000.00 | [S] mobiledev | 7  | 100,000.00 

しかし、本当の合計は100,000.00(7倍以下)

Sum  | Campaign  | Leads | Cost Per Acquisition 
100,000.00 | [S] mobiledev | 7  | 14,285.71 
+0

せずに別のクエリで合計を実行したらいいですか? – Grantly

+0

はい、しました。 AdWordsデータは、単一行あたりのすべての広告の表で、「キャンペーン」や「広告費用」などの列です。私は 'campaign'でグループ化された'広告費 'を合計し、hubspotから連絡先の数で除算して' data_source_1 == campaign'としたいとします。 – Patryk

+0

次に、プライマリselectステートメントでsum節を使用する必要はありません。 – user3532232

答えて

1

に等しくなければならないので、私はあなたのデータがどのように見えるかわからないが、これはうまくいくかもしれない何かを推測している。 Tsqlの構文:

Select (sum(t1.adcost)/count(*)) 'sum' 
    , t1.campaign 
    , count(*) 'leads' 
    , (sum(t1.adcost)/count(*))/count(*) 
From (select a.campaign, sum(adCost) ''adcost' from adwords a group by a. Campaign) t1 
-- the rest of your code 

私は電話でコーディングが嫌いです。 私はこれを書いた後、私のcommenTipがちょっと間違っていたと思いました。しかし、これはあなただけ(合計値などはせずに)ちょうどあなたのクエリが生成ものを見るためにSELECT * FROMしようとしたことがあり、それは

+0

ありがとう!私は解決策が洗練されているとはかなり確信していましたが、それは仕事でした:) – Patryk

1

JOIN

SELECT AD."sum", 
     AD."campaign", 
     Count(DISTINCT CT."properties__email__value") AS "Leads", 
     AD."sum"/Count(DISTINCT CT."properties__email__value") AS "Cost Per Acquisition" 
FROM 
(
    SELECT Sum(AD."adcost") AS "sum", 
      AD."campaign" AS "campaign" 
    FROM "adwords"."adwords" as AD 
    GROUP BY AD."campaign" 
) as AD 
INNER JOIN "hubspot_stitch"."contacts" CT 
       ON Lower(AD."campaign") = CT."properties__hs_analytics_source_data_1__value" AND 
( 
    CT."properties__hs_analytics_source_data_2__value" LIKE 'sales_adwords%' AND 
    ( 
     CT."properties__lifecyclestage__value" = 'opportunity' OR 
     CT."properties__lifecyclestage__value" = 'customer' 
    ) 
) 
GROUP BY AD."campaign" 
ORDER BY AD."campaign" ASC 
関連する問題