2017-08-31 40 views
0

我有以下两个表,我希望加入一个全面的数字营销报表,而不会在度量标准方面创建重复项。这个想法是采取竞争对手的广告,并加入我现有的营销数据如下:从第一个表中创建数据而不创建重复的度量标准行(第二个表包含更多行但不包含指标)

Campaign|Impressions | Clicks | Conversions | CPC |Key        
---------+------------+--------+-------------+-----+---- 
    USA-SIM|53432  | 5001 |   5| 2$ |Hgdy24 
    DE-SIM |5389  | 4672 |   3| 4$ |dhfg12 

竞争对手数据如下;

 Key | Ad Copie | 
---------+------------+ 
    Hgdy24 |Click here! | 
    Hgdy24 |Free Trial! | 
    Hgdy24 |Sign Up now | 
    dhfg12 |Check it out| 
    dhfg12 |World known | 
    dhfg12 |Sign up  | 

使用传统的连接查询产生以下不可用的结果

Campaign|Impressions | Clicks | Conversions | CPC |Key |Ad Copie      
---------+------------+--------+-------------+-----+------+--------- 
    USA-SIM|53432  | 5001 |   5| 2$ |Hgdy24|Click here! 
    USA-SIM|53432  | 5001 |   5| 2$ |Hgdy24|Free Trial! 
    USA-SIM|53432  | 5001 |   5| 2$ |Hgdy24|Sign Up now 
    DE-SIM |5389  | 4672 |   3| 4$ |dhfg12|Check it out 
    DE-SIM |5389  | 4672 |   3| 4$ |dhfg12|World known 
    DE-SIM |5389  | 4672 |   3| 4$ |dhfg12|Sign up 

下面是所期望的输出

Campaign|Impressions | Clicks | Conversions | CPC |Key |Ad Copie      
---------+------------+--------+-------------+-----+------+--------- 
    USA-SIM|53432  | 5001 |   5| 2$ |Hgdy24|Click here! 
    USA-SIM|   |  |    |  |Hgdy24|Free Trial! 
    USA-SIM|   |  |    |  |Hgdy24|Sign Up now 
    DE-SIM |5389  | 4672 |   3| 4$ |dhfg12|Check it out 
    DE-SIM |   |  |    |  |dhfg12|World known 
    DE-SIM |   |  |    |  |dhfg12|Sign up 

或者作为替代方案,也将工作将是

Campaign|Impressions | Clicks | Conversions | CPC |Key |Ad Copie      
---------+------------+--------+-------------+-----+------+--------- 
    USA-SIM|53432  | 5001 |   5| 2$ |Hgdy24| 
    USA-SIM|   |  |    |  |Hgdy24|Click here! 
    USA-SIM|   |  |    |  |Hgdy24|Free Trial! 
    USA-SIM|   |  |    |  |Hgdy24|Sign Up now 
    DE-SIM |5389  | 4672 |   3| 4$ |dhfg12| 
    DE-SIM |   |  |    |  |dhfg12|Check it out 
    DE-SIM |   |  |    |  |dhfg12|World known 
    DE-SIM |   |  |    |  |dhfg12|Sign up 

我还没有找到解决办法,因此不会生成额外的度量标准。

最新结果的

campaing | impressions | clicks | conversions | cpc | key | ad_copie 
----------+-------------+--------+-------------+-----+--------+------------ 
USA-SIM |  53432 | 5001 |   5 | 2$ |  | 
USA-SIM |    |  |    |  | Hgdy24 | Click here! 
USA-SIM |    |  |    |  | Hgdy24 | Free Trial! 
USA-SIM |    |  |    |  | Hgdy24 | Sign Up now 
DE-SIM |  5389 | 4672 |   3 | 4$ |  | 
DE-SIM |    |  |    |  | dhfg12 | Check it out 
DE-SIM |    |  |    |  | dhfg12 | World known 
DE-SIM |    |  |    |  | dhfg12 | Sign up 
+0

这是一个显示格式问题,可以在应用程序中更好地解决,而不是SQL(尽管它可以在SQL中完成) –

+0

这样做会怎样? –

+0

每个'key'都有一行是可以接受的,但是'ad_copie'列是否包含字符串数组?你可以选择'array_agg(ad_copie)'和'group by key'。 –

回答

0

您可以使用窗口函数lag()检查什么key是前一行,要么显示指标或空它们。

select campaing, 
     case when prev_key is null or prev_key != key then impressions end as impressions, 
     case when prev_key is null or prev_key != key then clicks end as clicks, 
     case when prev_key is null or prev_key != key then conversions end as conversions, 
     case when prev_key is null or prev_key != key then cpc end as cpc, 
     key, ad_copie 
    from (
    select campaing, lag(key) over() AS prev_key, impressions, clicks, conversions, cpc, key, ad_copie 
    from ad1 
    join comp1 using(key) 
    order by campaing desc, key 
) sub; 

结果:

campaing | impressions | clicks | conversions | cpc | key | ad_copie 
----------+-------------+--------+-------------+-----+--------+-------------- 
USA-SIM |  53432 | 5001 |   5 | 2$ | Hgdy24 | Click here! 
USA-SIM |    |  |    |  | Hgdy24 | Free Trial! 
USA-SIM |    |  |    |  | Hgdy24 | Sign Up now 
DE-SIM |  5389 | 4672 |   3 | 4$ | dhfg12 | Check it out 
DE-SIM |    |  |    |  | dhfg12 | World known 
DE-SIM |    |  |    |  | dhfg12 | Sign up 
(6 wierszy) 

编辑:您可能需要与你的哪些列,你会为了你的数据指标NULL之前比较哪些列,并可能进行修补。如果关键是独特的竞选,那么我认为这就足够了。

+0

你好Lukasz,我在制定这个逻辑时遇到了一点麻烦,也许你可以帮我一个忙,看一看吗? https://stackoverflow.com/questions/46396079/ambiguous-column-within-a-lag-function-query –

+0

我认为格伦在那里给了你很好的建议 - 你应该为这两个表创建别名,并在所有列前添加适当的别名。 –

相关问题