2016-12-15 12 views
0

idの一致に対してvalues_occurrenceを一緒に追加しようとしています。例えば、ID番号1は3で、別のレコードはID番号1が4であることを示します。IDマッチングに基づいて3 + 4を追加したいとします。UNIONから来たカウントから値を追加してください

私はどのIDが各テーブルに最も多くのエントリを持っているのかを確認し、それらを一緒に追加しようとしています。

ID value_occurrence 
-------------------- 
1 3 
1 4 

これまでのところこれが私の持っているものです。

SELECT ID, COUNT(ID) AS value_occurrence 
FROM  TABLE1 
GROUP BY ID 
UNION 
SELECT ID, COUNT(ID) AS value_occurrence 
FROM  TABLE2 
GROUP BY ID 
ORDER BY ID ASC; 

助けてください。

+0

'union'は、ほぼ確実に間違っています。それは 'すべての組合 'でなければなりません。 'union'は重複を排除します。したがって、両方のテーブルで同じカウントを持つIDの場合、両方のテーブルではなく、1つのテーブルだけを取得します。それからあなたは自分自身と矛盾している。 EACH TABLEまたは両方のテーブルの組み合わせで最も多くのエントリを持つIDを知りたいですか?おそらく一緒に追加されました。そして、最大の数を持つ複数のIDがある場合の結果はどうでしょうか?(たとえば、最大値が12で、IDが3つあり、それぞれのカウントが12の場合)必要な正確な出力は何ですか? – mathguy

+0

「どのIDが各テーブルに最大のエントリを持っているかを確認してから、それらを一緒に追加しようとしています」という意味を説明してください。異なるIDが各テーブルに最大のエントリを持つ場合はどうなりますか? –

答えて

2

を行いunion all、その後集計:

select id, count(*) as total_cnt, sum(t1) as t1_cnt, sum(t2) as t2_cnt 
from ((select id, 1 as t1, 0 as t2 from table1) union all 
     (select id, 0, 1 from table2) 
    ) t 
group by id 
order by id; 
+0

これは、「どのIDが最も多くのエントリを持っているか」(OPの要件から)は表示されません。 – mathguy

+0

@mathguy。 。 。正直言って、私はそれがどういう意味か分かりません。 –

+0

私も。だから、私はOPに戻って問題を解明することを求め、問題の解決策ではなく、それが意味することさえも理解していないからです。 – mathguy

関連する問題