PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да групирате резултатите по брой връзки

Нямам вашите примерни данни, но току-що пресъздадох сценария тук с една таблица: Демо

Можете да LEFT JOIN броенето с generate_series() и вземете нули за липсващ брой на n членства. Ако не искате нули, просто използвайте втората заявка.

Заявка1

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;

Заявка2

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсене във вложен/многостепенен тип Postgres JSON с помощта на Active Record

  2. Как да създадете база данни с UTF-8 сортиране в PostgreSQL на Windows?

  3. PostgreSQL заявка за изброяване на всички имена на таблици?

  4. Как да групирате резултатите по брой връзки

  5. Инсталиране на pg -v 0.17.1