2017-07-20 5 views
1

2つのテーブルにわたるx &のユニークな組み合わせごとの出現回数を調べる必要があります。複数のテーブルにまたがるSQLの数

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

出力:

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

は、ここに私の現在のクエリです:

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

これは、x、yの&ユニークな組み合わせの重複するインスタンスを作成します。

答えて

1

UNIONの結果にCOUNT()を適用します。このソリューションは、両方のテーブルの一意のエントリをカウントし、その後から一緒に結果を加算

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 

:私はこのようなものを設定します

select x,y,count(*) as Amount 
from 
(SELECT x, Y FROM Table1 
UNION ALL 
SELECT X, Y FROM Table2)temp 
group by x,y 
関連する問題