sql >> データベース >  >> RDS >> PostgreSQL

関係の数で結果をグループ化する方法

    サンプルデータはありませんが、ここで1つのテーブルを使用してシナリオを再作成しました: デモ

    LEFT JOIN generate_series()でのカウント nのカウントが欠落している場合はゼロを取得します メンバーシップ。ゼロが必要ない場合は、2番目のクエリを使用してください。

    Query1

    WITH c
    AS (
        SELECT profile_id
            ,count(*) ct
        FROM Table1
        GROUP BY profile_id
        )
        ,m
    AS (
        SELECT MAX(ct) AS max_ct
        FROM c
        )
    SELECT n
        ,COUNT(c.profile_id)
    FROM m
    CROSS JOIN generate_series(1, m.max_ct) AS i(n)
    LEFT JOIN c ON c.ct = i.n
    GROUP BY n
    ORDER BY n;
    

    Query2

    WITH c
    AS (
        SELECT profile_id
            ,count(*) ct
        FROM Table1
        GROUP BY profile_id
        )
    SELECT ct
          ,COUNT(*)
     FROM c 
    GROUP BY ct
    ORDER BY ct;
    



    1. SQL Server 2008 一連の日時を生成する

    2. SQLのエクスプレスクエリ

    3. SQLServerの2つの日時の違い

    4. データベース内の特定の時間からの経過時間