2017-07-20 5 views
1

Ich muss die Anzahl der Vorkommen pro eindeutige Kombination von x & y über zwei Tabellen finden.SQL Count über mehrere Tabellen

Table1:  Table2: 
+----+----+ +----+----+ 
| x | y | | x | y | 
+----+----+ +----+----+ 
| 20 | 10 | | 20 | 10 | 
| 20 | 20 | | 20 | 20 | 
| 20 | 20 | | 30 | 20 | 
| 40 | 10 | +----+----+ 
+----+----+ 

Ausgang:

+----+----+--------+ 
| x | y | amount | 
+----+----+--------+ 
| 20 | 10 |  2 | 
| 20 | 20 |  3 | 
| 30 | 20 |  1 | 
| 40 | 10 |  1 | 
+----+----+--------+ 

Hier ist meine aktuelle Abfrage:

SELECT x, Y, count(*) AS Amount FROM Table1 
UNION ALL 
SELECT X, Y, count(*) AS Amount FROM Table2 
GROUP BY x, y; 

Dies schafft doppelte Instanzen von einzigartigen Kombinationen von x & y.

Antwort

1

Nehmen COUNT() auf dem Ergebnis der UNION:

select x,y,count(*) as Amount 
from 
(SELECT x, Y FROM Table1 
UNION ALL 
SELECT X, Y FROM Table2)temp 
group by x,y 
0

ich so etwas wie diese aufgebaut würde:

select 
    d.x 
    , d.y 
    , sum(d.cnt) as cnt 
from 
    (
    select x, y, count(*) as cnt from table1 group by x, y 
    union all 
    select x, y, count(*) as cnt from table2 group by x, y 
) d 
group by 
    d.x 
    , d.y 

Diese Lösung, die die eindeutigen Einträge in beiden Tabellen zählt und addiert dann die Ergebnisse zusammen aus die zwei Tabellen.

Verwandte Themen