скажем, у меня есть column1, который был сформирован многими объектами (в массиве json). Мне нужно что-то подобное сделать здесь: https://community.modeanalytics.com/sql/tutorial/sql-pivot-table/
Так что мне нужно, чтобы над набором элементов тип события мог быть: ('Городской', 'Городской', 'Сельский') ... тогда, когда я обращаюсь к 'Городскому', это выдает следующую ошибку:
ОШИБКА: аргумент CASE / WHEN не должен возвращать набор.
В конце мне нужно посчитать количество происходящих событий, но иногда у меня есть 2 события в наборе, поэтому он не может дать логическое значение ... я должен каким-либо образом выполнять подзапрос?
Большое спасибо заранее!
select * from
(select jsonb_array_elements(event_all)->>'roadEnv' as road_env,
SUM(CASE WHEN (jsonb_array_elements(event_all)->>'Type') = 'Urban' THEN event_counts ELSE NULL END) AS U,
--SUM(CASE WHEN jsonb_array_elements(event_all)->>'Type' = 'Urban' THEN event_counts ELSE NULL END) AS R,
--SUM(CASE WHEN jsonb_array_elements(event_all)->>'Type' = 'Urban' THEN event_counts ELSE NULL END) AS M,
COUNT(1)::real as event_counts
from
(SELECT (s.fields->'externalEvents') as event_all
FROM addon_session s
WHERE <filter> and jsonb_typeof(s.fields->'externalEvents')='array') as data
GROUP BY 1, 2 ) as data
where road_env is not null and "Events" <> 'AAA'
--- WE NEED TO COUNT OR SUM THEM I GUESS... HOW? COUNT(CASE WHEN Type = 'Urban' THEN 'URBAN' END as 'u')