2 つのテーブルの結合でグループ化フィールドが一意であることを確認する方法

計算される指標が複数のテーブルから得られる場合、Union All を使用して、異なるテーブルで計算された指標を組み合わせることができます。Union allの使用条件について:2つのSQL文を結合するフィールドの数同じでなければなりません、そしてフィールドタイプ「互換性がある」(一貫性がある)

さらに、union と Union all の違いを確認してください。union は複数の結果セット内の重複した結果を自動的に圧縮しますが、union all は重複しているかどうかに関係なく、すべての結果を表示します。

結合: 重複行を除く 2 つの結果セットに対して結合演算を実行し、デフォルト ルールに従って並べ替えを実行します。
すべて結合: 重複行を含む 2 つの結果セットに対して結合演算を実行し、並べ替えは実​​行しません。

グループ化するフィールドが一意であることを確認するにはどうすればよいですか?
一般的に使用される記述方法は 2 つあります。
記述方法 1: グループ化してからすべてを結合し、グループ化フィールドの一意性を確保するために再度グループ化します。

select
	group_key,sum(index_a),sum(index_b)
from(
	select 
		group_key,index_a,0 as index_b
	from a
	group by group_key
	union all
	select 
		group_key,0 as index_a,index_b
	from a
	group by group_key
)
group by group_key
;

書き方 2: 最初にグループ化せず、見つかったすべてのグループ化フィールドを結合してからグループ化します。

select
from
(
    select
        group_by_key
    from
    (
        select
            group_by_key
        from t1
        union all
        select
            group_by_key
        from t2
    )a
    group by group_by_key
)a
left outer join t1
left outer join t2

おすすめ

転載: blog.csdn.net/weixin_43629813/article/details/132669648