Выбрать данные по условию ключ-значение из массива 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.

Что пробовала:

  1. Смогла только разбить данные в ячейке data на отдельные строки по массивам select distinct json_array_elements_text("data"::json) from cache

  2. Еще пробовала такой вариант select json_extract_path_text("data"::json,'names', 'a', 'count') from cache, но получаю NULL и понятно почему, он между массивов попадает.

Соединить эти 2 запроса никак не получается.


Ответы (0 шт):