выберите количество отдельных столбцов в таблице новых полей - PullRequest
0 голосов
/ 29 июня 2018

У меня есть результат запроса, и есть 3 разных p_id (3160, 3301, 41)

test table image

Я хочу выбрать count (отличный p_id) и, как показано p_id_count_true (см. Изображение), p_id_count неверен, как я могу написать подзапрос и получить p_id_count_true

1 Ответ

0 голосов
/ 29 июня 2018

Вы, кажется, хотите:

select . . .,
       count(distinct pid) over () as num_pids
from t

Увы, Postgres не поддерживает distinct в оконных функциях. Один из обходных путей:

select . . .,
       sum( (seqnum_pid = 1)::int ) over () as num_pids
from (select t.*, row_number() over (partition by pid order by pid) as seqnum_pid
      from t
     ) t

Некоторые люди предпочитают метод dense_rank() вместо:

select . . .,
       max( seqnum_pid ) over () as num_pids
from (select t.*, dense_rank() over (order by pid) as seqnum_pid
      from t
     ) t
...