繁体   English   中英

用于 jsonb 的 Postgres 聚合 function

[英]Postgres aggregation function for jsonb

我想聚合 postgres 数据,但我需要一个查询,我可以在哪里使用聚合 function 用于不同的数据类型 基本上想结合这两个查询。

select browser_id, jsonb_object_agg(key, val)
from (
    select browser_id, key, sum(value::numeric) val
    from aggregated_browser_days, jsonb_each_text(geo_city)
    group by browser_id, key
    ) s
group by browser_id;

select browser_id, sum(pageviews) as total_pageviews,
       STRING_AGG(DISTINCT browser_family, ',') AS browser, 
       STRING_AGG(DISTINCT device_model, ',') AS device_model,
       SUM(timespent) as total_timespent, SUM(sessions) as session_count
from data
GROUP BY browser_id

有人可以指导我吗? 提前致谢

该数据来自两个不同的表。 所以JOIN似乎是正确的方法。 以防万一基表包含不同的浏览器集,我建议使用FULL JOIN

select *
from (select browser_id, jsonb_object_agg(key, val)
      from (select browser_id, key, sum(value::numeric) as val
            from aggregated_browser_days cross join lateral
                 jsonb_each_text(geo_city)
            group by browser_id, key
           ) s
      group by browser_id
     ) bd full join
     (select browser_id, sum(pageviews) as total_pageviews,
             STRING_AGG(DISTINCT browser_family, ',') AS browser, 
             STRING_AGG(DISTINCT device_model, ',') AS device_model,
             SUM(timespent) as total_timespent, SUM(sessions) as session_count
      from data
      group by browser_id
     ) b
     using (browser_id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM