Выбрать данные по условию ключ-значение из массива postgresql
given:
create table if not exists cache
(
day timestamp
not null
,data text
not null
,type varchar
not null
)
;
INSERT INTO cache (day, data, type)
VALUES ('2022-05-01 02:00:00', '[{"id":"1","names":{"a":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"b":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"c":[]}},{"id":"2","names":{"a":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"b":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"c":[]}}]', 'sent'),
('2022-05-05 02:00:00', '[{"id":"1","names":{"a":[{"date":"01.05.2022","count":5.0},{"date":"02.05.2022","count":1.0},{"date":"03.05.2022","count":0.0}],"b":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"c":[]}},{"id":"2","names":{"a":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"b":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"c":[]}}]', 'sent'),
('2022-05-09 02:00:00', '[{"id":"1","names":{"a":[{"date":"01.05.2022","count":1.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"b":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"c":[]}},{"id":"2","names":{"a":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"b":[{"date":"01.05.2022","count":0.0},{"date":"02.05.2022","count":0.0},{"date":"03.05.2022","count":0.0}],"c":[]}}]', 'sent');
Question: Как посчитать количество записей "date": "01.05.2022","count": 0.0 для всей записи в ячейке, для всех массивов в ней? Т е мне надо убедиться что на 1/05/22 все сount=0.
Что пробовала:
Смогла только разбить данные в ячейке data на отдельные строки по массивам select distinct json_array_elements_text("data"::json) from cache
Еще пробовала такой вариант select json_extract_path_text("data"::json,'names', 'a', 'count') from cache, но получаю NULL и понятно почему, он между массивов попадает.
Соединить эти 2 запроса никак не получается.