посчитать номер массива - PullRequest
0 голосов
/ 17 мая 2019

Я хочу получить количество каждого элемента массива.Я использую Postgres.У меня есть массив [1,2,3,1,1,2].Как сравнить эти элементы массива с каждым элементом.

вывод будет:

array_element | count


1 |3

2 |2

3 |1

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Для применения к одному значению (не к столбцу таблицы):

SELECT i, count(*) AS cnt
FROM   unnest('{1,2,3,1,1,2}'::int[]) i
GROUP  BY i
ORDER  BY i;

unnest() - это функция, возвращающая множество, или «табличная функция».Вы можете использовать его как таблицу в запросе SELECT.

1 голос
/ 17 мая 2019

Вы можете использовать unnest:

SELECT array_elem, COUNT(*) AS cnt
FROM t, unnest(c) s(array_elem)
GROUP BY array_elem
ORDER BY array_elem;

ДБ <> Fiddle demo

...