Как посчитать вхождения в столбце списка на postgres? - PullRequest
1 голос
/ 08 апреля 2020

У меня есть таблица со следующей структурой:

user  |  medias
----------------------
 1    | {ps2,xbox}
 1    | {nintendo,ps2}

Как подсчитать вхождения каждой строки в столбце массива?

Ожидаемый результат:

media    |  amount
------------------
ps2      |    2
nintendo |    1
xbox     |    1

1 Ответ

0 голосов
/ 08 апреля 2020

Вы можете удалить массив с боковым соединением, а затем агрегировать:

select x.media, count(*) amount
from myable t
cross join lateral unnest(t.medias) x(media)
group by x.media
order by amount desc, x.media
...