Посчитайте каждое значение в каждой строке после string_agg в SQL - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть таблица SQL с одним столбцом в конце. Я группирую по заголовкам id и string_agg.

 ID     Title
  1        a
  1        a
  1        b
  2        c
  2        a

У меня есть эта таблица прямо сейчас.

  Titles
  a,a,b
  c,a

Я хочу посчитать каждое значение в каждой строке в строке agg как новый столбец , Я пытался считать разные или Count ("a"), который возвращает количество всех значений в одной строке. Мой ожидаемый результат будет

Titles count_a count_b count_c count_all
a,a,b    2       1       0        3
c,a      1       0       1        2

Можно ли рассчитать в SQL?

1 Ответ

1 голос
/ 21 февраля 2020

Вы можете использовать условное агрегирование:

select id, string_agg(title, ',' order by title) as titles,
       countif(title = 'a') as num_as,
       countif(title = 'b') as num_bs,
       countif(title = 'c') as num_cs,
       count(*) as total
from t
group by id;
...