2017-08-30 3 views
0

Ich arbeite mit den folgenden zwei Tabellen;Aggregieren einer Tabelle basierend auf einer Spalte und dann Verbinden mit einer anderen Tabelle

Tabelle 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  

Tabelle 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 

Das Ziel ist, die folgende Ausgabe zu erhalten;

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 |   |     | 

Der wichtigste Teil dieser Funktion die zweite Tabelle

auf Conversions basiert beinhaltet Aggregation Ich würde ich mir vorstellen, führen Sie diese dann mit einem inneren verbinden.

Vielen Dank.

Antwort

1

Nimm dies in zwei Schritten, dann:

1) aggregieren die zweite Tabelle:

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

2) verwenden, die als eine Unterabfrage/abgeleitete Tabelle zu Ihrem ersten Tisch verbindet:

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; 

Alternativ können Sie auch beitreten und dann auch gruppieren, da es nicht nötig ist, zweimal oder irgendetwas zu aggregieren:

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 

Die einzige andere wichtige Sache hier ist, dass wir einen LINKEN ÄUSSEREN JOIN verwenden, da wir alle Datensätze aus Tabelle1 und alle Datensätze aus Tabelle2, die auf den Schlüssel passen, wollen.

+0

Großartig, danke. –

Verwandte Themen