Вы можете использовать unnest () , чтобы сгладить массив, а затем сгруппировать по , чтобы сгруппировать уникальные значения.
Запрос для создания набора данных для вашегокейс. Вы можете заменить эту часть командой select в последнем запросе:
with dataset AS (
SELECT ARRAY[
ARRAY['A','B','C'],
ARRAY['A','B'],
ARRAY['A','D']
] AS data
)
select dt from dataset
CROSS JOIN UNNEST(data) AS t(dt)
O / P:
------
dt
------
[A,B,C]
------
[A,B]
------
[A,D]
Теперь в последнем запросе мы сначалавыровняйте эти данные, чтобы удалить все значения из всех строк, а затем сгруппируйте их, чтобы получить уникальные значения и их количество.
ЗАКЛЮЧИТЕЛЬНЫЙ ЗАПРОС:
with da AS(
with dataset AS (
SELECT ARRAY[
ARRAY['A','B','C'],
ARRAY['A','B'],
ARRAY['A','D']
] AS data
)
select dt from dataset
CROSS JOIN UNNEST(data) AS t(dt)
)
select daVal,count(*) from da
CROSS JOIN UNNEST(dt) AS t(daVal)
GROUP BY daVal