таблица количества появлений чисел в столбце postgresql - PullRequest
0 голосов
/ 03 октября 2018

У меня есть таблица:

picture

Мой выбор:

select  regexp_split_to_table(t3."Id"::character varying,'') as s
from (select t1."Id" from table1 t1
union all
select t2."Id"from table2 t2) t3
order by s

Или также я могу получить строку '22173345566179111134546175622323811' с этим:

select  string_agg(t3."Id"::character varying,'') as s
from (select t1."Id" from table1 t1
union all
select t2."Id"from table2 t2) t3

Мне нужно получить таблицу с данными number | count , то есть для любого числа, чтобы получить количество повторений в выборке, например:

1|9

2 |5

3 |5

и т. Д. *

СУБД PostgreSQL

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Если я вас правильно понимаю, вам нужен список всех цифр, которые существуют в наборе идентификаторов из двух таблиц, и количество каждой цифры, как часто оно появляется во всех этих идентификаторах.Если это так, вам просто нужно GROUP BY цифру и использовать count().

SELECT s.d,
       count(*) count
       FROM (SELECT t1."Id"
                    FROM table1 t1
             UNION ALL
             SELECT t2."Id"
                    FROM table2 t2) t3
            CROSS JOIN LATERAL regexp_split_to_table(t3."Id"::character varying, '') s(d)
       GROUP BY s.d
       ORDER BY s.d;
0 голосов
/ 09 октября 2018

Самый простой способ

select regexp_split_to_table(t3."Id"::character varying,'') s,  count(*) count
from (select t1."Id" from table1 t1 union all select t2."Id"from table2 t2) t3
group by s
0 голосов
/ 03 октября 2018

Делает ли это то, что вы хотите?

select id, count(*)
from (select t1."Id" from table1 t1
      union all
      select t2."Id" from table2 t2
     ) t3
group by id
order by id;
...