[英]Postgres aggregation function for jsonb
i want to aggregate postgres data, but i need where one query where i can use aggregate function for different datatype .我想聚合 postgres 数据,但我需要一个查询,我可以在哪里使用聚合 function 用于不同的数据类型。 Basically want to combine this two queries.基本上想结合这两个查询。
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
Can anyone please guide me??有人可以指导我吗? Thanks in advance提前致谢
This data is coming from two different tables.该数据来自两个不同的表。 So a JOIN
seems like the right approach.所以JOIN
似乎是正确的方法。 Just in case the base tables contain different sets of browsers, I am suggesting a FULL 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.