複数のテーブルで一般的なユーザーの数を数える

sql_learner

以下に示すように4つのテーブルがあります

ここに画像の説明を入力してください

基本的に、テーブル1からテーブル2、3、および4に存在するユーザーの数を取得します。同様に、テーブル2についても、テーブル1、3、および4に存在するユーザーの数を取得し、テーブル3および4についても同じです。

基本的にすべての可能な組み合わせ。私が望む最終結果は以下のようなものです

ここに画像の説明を入力してください

私が解決しようとしている方法の1つは、他のテーブルleft-joinでoftable1実行してcountから、出力の最初の行を取得することです。しかし、考えられるすべての組み合わせに対してそれを行うことは最適化されていません。私は可能な他の選択肢を探していました

同じための私のコード

SELECT 
COUNT(DISTINCT A.id) table1,
COUNT(DISTINCT B.id) table2,
COUNT(DISTINCT C.id) table3,
COUNT(DISTINCT D.id) table4
FROM table1 A
LEFT JOIN table2 B
ON A.id = B.id

LEFT JOIN table3 C
ON A.id = C.id

LEFT JOIN table4 D
ON A.id = D.id

db-fiddle(このフィドルはmysql用であり、db固有のアプローチよりも一般的なSQLベースのアプローチを探しています)

ゴードン・リノフ

私がお勧めします:

with t as (
      select 'table1' as which, id from table1 union all
      select 'table2' as which, id from table2 union all
      select 'table3' as which, id from table3 union all
      select 'table4' as which, id from table4
     )
select ta.which,
       sum(case when tb.which = 'table1' then 1 else 0 end) as cnt_table1,
       sum(case when tb.which = 'table2' then 1 else 0 end) as cnt_table2,
       sum(case when tb.which = 'table3' then 1 else 0 end) as cnt_table3,
       sum(case when tb.which = 'table4' then 1 else 0 end) as cnt_table4
from t ta left join
     t tb
     on ta.id = tb.id
group by ta.which;

注:これは、idが各テーブルで一意であることを前提としています。これは、列の名前とサンプルデータを考えると妥当な仮定です。ただし、重複がある場合はunion all、CTEのをに変更できますunion

この構造は、追加のテーブルにも簡単に一般化できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数の一般的なテーブル式を結合する

分類Dev

PHP:最も一般的なテーブル内の重複の数をエコーする

分類Dev

dict(ユーザー名)の複数の一般的な値の解析

分類Dev

laraveleloquentは複数のユーザー間のすべての一般的なチャットを取得します

分類Dev

行だけでなく、テーブル全体の一般的な単語数

分類Dev

複数のforループを一般化する

分類Dev

SQL:一般的な多対多の関係を持つ複数のテーブルを比較します

分類Dev

一般的な `Contact`を複数の異なるテーブルにアタッチするにはどうすればよいですか?

分類Dev

複数のユーザーを参照できるテーブルのユーザー所有権

分類Dev

SQLテーブルの列で一般的な単語の数を見つけますか?

分類Dev

異なるユーザー用に複数のテーブルを作成する方が効率的ですか?

分類Dev

識別子を複数の一般的なテーブル式にバインドできませんでした

分類Dev

異なるユーザーの同じテーブルでの複数の結合

分類Dev

UnityContainer-一般的な作業の統一性を備えた複数のデータベース

分類Dev

Kotlinで一般的な変数のワイルドカード

分類Dev

単一のユーザーではなく、httpデータから複数のユーザーを表示する

分類Dev

辞書のリストで一般的なキーと値のペアを数える

分類Dev

一般的な検索バーLaravel7の一意のIDなしで複数のテーブルを結合すると、SQLエラーが発生します

分類Dev

複数のテーブルのHTMLテキストフィールドで複数のユーザー入力を検索するためのクエリ

分類Dev

Laravelのビューを通じてテーブルからユーザー数を数える方法は?

分類Dev

一般的なパーシャルを使用して複数のモデルのテンプレートをレンダリングする方法

分類Dev

グループ内のユーザー数を数える

分類Dev

グループ内のユーザー数を数える

分類Dev

SQL Serverで複数のユーザーテーブルが衝突するのを防ぐ方法は?

分類Dev

複数のSQLAlchemyモデル間で一般的な「検索バー」検索を行う方法

分類Dev

SQLテーブルを複数の列で並べ替える

分類Dev

Javafxテーブルを複数の列で並べ替える

分類Dev

複数のユーザーテーブルの認証

分類Dev

Laravelの複数のユーザーIDテーブル

Related 関連記事

  1. 1

    複数の一般的なテーブル式を結合する

  2. 2

    PHP:最も一般的なテーブル内の重複の数をエコーする

  3. 3

    dict(ユーザー名)の複数の一般的な値の解析

  4. 4

    laraveleloquentは複数のユーザー間のすべての一般的なチャットを取得します

  5. 5

    行だけでなく、テーブル全体の一般的な単語数

  6. 6

    複数のforループを一般化する

  7. 7

    SQL:一般的な多対多の関係を持つ複数のテーブルを比較します

  8. 8

    一般的な `Contact`を複数の異なるテーブルにアタッチするにはどうすればよいですか?

  9. 9

    複数のユーザーを参照できるテーブルのユーザー所有権

  10. 10

    SQLテーブルの列で一般的な単語の数を見つけますか?

  11. 11

    異なるユーザー用に複数のテーブルを作成する方が効率的ですか?

  12. 12

    識別子を複数の一般的なテーブル式にバインドできませんでした

  13. 13

    異なるユーザーの同じテーブルでの複数の結合

  14. 14

    UnityContainer-一般的な作業の統一性を備えた複数のデータベース

  15. 15

    Kotlinで一般的な変数のワイルドカード

  16. 16

    単一のユーザーではなく、httpデータから複数のユーザーを表示する

  17. 17

    辞書のリストで一般的なキーと値のペアを数える

  18. 18

    一般的な検索バーLaravel7の一意のIDなしで複数のテーブルを結合すると、SQLエラーが発生します

  19. 19

    複数のテーブルのHTMLテキストフィールドで複数のユーザー入力を検索するためのクエリ

  20. 20

    Laravelのビューを通じてテーブルからユーザー数を数える方法は?

  21. 21

    一般的なパーシャルを使用して複数のモデルのテンプレートをレンダリングする方法

  22. 22

    グループ内のユーザー数を数える

  23. 23

    グループ内のユーザー数を数える

  24. 24

    SQL Serverで複数のユーザーテーブルが衝突するのを防ぐ方法は?

  25. 25

    複数のSQLAlchemyモデル間で一般的な「検索バー」検索を行う方法

  26. 26

    SQLテーブルを複数の列で並べ替える

  27. 27

    Javafxテーブルを複数の列で並べ替える

  28. 28

    複数のユーザーテーブルの認証

  29. 29

    Laravelの複数のユーザーIDテーブル

ホットタグ

アーカイブ