2017-08-30 68 views
0

我正在处理以下两个表格;根据一列汇总表格,然后将其与另一个表格合并

表1

Key   |Clicks |Impressions 
-------------+-------+----------- 
USA-SIM-CARDS|55667 |544343  
DE-SIM-CARDS |4563 |234829  
AU-SIM-CARDS |3213 |232242  
UK-SIM-CARDS |3213 |1333223  
CA-SIM-CARDS |4321 |8883111  
MX-SIM-CARDS |3193 |3291023  

表2

 Key   |Conversions |Final Conversions|Active Sims 
-----------------+------------+-----------------+----------- 
USA-SIM-CARDS |456   |43    |4 
USA-SIM-CARDS |65   |2    |1 
UK-SIM-CARDS  |123   |4    |3 
UK-SIM-CARDS  |145   |34    |5 

的目标是得到以下输出;

Key   |Clicks |Impressions|Conversions|Final Conversions|Active Sims 
-------------+-------+-----------+-----------+-----------------+----------- 
USA-SIM-CARDS|55667 |544343  |521  |45    |5 
DE-SIM-CARDS |4563 |234829  |   |     | 
AU-SIM-CARDS |3213 |232242  |   |     | 
UK-SIM-CARDS |3213 |1333223 |268  |38    |8 
CA-SIM-CARDS |4321 |8883111 |   |     | 
MX-SIM-CARDS |3193 |3291023 |   |     | 

这一功能的最关键的部分包括基于转化

话,我会想象我有一个内执行该聚集一起的第二个表。

谢谢。

回答

1

在两个步骤中取本然后:

1)聚合所述第二表:

SELECT Key, sum(Conversions) as Conversions, sum("Final Conversions") as FinalConversions, Sum("Active Sims") as ActiveSims FROM Table2 GROUP BY key 

2)使用,作为一个子查询/派生表接合到第一个表:

SELECT 
    t1.key, 
    t1.clicks, 
    t1.impressions, 
    t2.conversions, 
    t2.finalConversions, 
    t2.ActiveSims 
From Table1 t1 
    LEFT OUTER JOIN (SELECT Key, sum(Conversions) as Conversions, sum("Final Conversions") as FinalConversions, Sum("Active Sims") as ActiveSims FROM Table2 GROUP BY 2) t2 
     ON t1.key = t2.key; 

作为一种替代方案,您可以加入,然后再进行分组,因为没有任何需要汇总两次或任何东西:

SELECT 
    t1.key, 
    t1.clicks, 
    t1.impressions, 
    sum(Conversions) as Conversions, 
    sum("Final Conversions") as FinalConversions, 
    Sum("Active Sims") as ActiveSims 
From Table1 t1 
    LEFT OUTER JOIN table2 t2 
     ON t1.key = t2.key 
GROUP BY t1.key, t1.clicks, t1.impressions 

这里唯一另外一件重要的事情是,我们使用了一个LEFT OUTER JOIN,因为我们希望Table1中的所有记录和Table2中与该键匹配的所有记录。

+0

太好了,谢谢。 –

相关问题