PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:Como somar atributos, incluindo um campo JSONB, e reter a forma da tabela?


A função jsonb_each_text() na subconsulta faz com que a coluna total_list_size é replicado tantas vezes quanto o número de itens em star_pu , então avg() apresenta um resultado adequado.

Para obter um total_list_size para uma date você pode usar uma subconsulta paralela que acumula o valor de forma independente.
select *
from (
    select date, json_object_agg(key, val) total_star_pu
    from (
        select date, key, sum(value::numeric) val
        from frontend_practicelist, jsonb_each_text(star_pu)
        group by date, key
        ) s
    group by date
    ) s
    join (
        select date, sum(total_list_size) total_list_size
        from frontend_practicelist
        group by date
        ) t
    using(date)
order by date;