使用Postgres 9.5
对于每个app
,我正在尝试计算从conversations
列重要的各个网址开始的started_at_url
次
我能够得到像这样的结果
id: 1, ..., data: {"urls" : ["/","/insights","/signin"], "counts" : [1,2,2]}
但它宁愿有一个形式为{url, count}
的JSON对象数组,而不是
到目前为止我的查询:
select
dt.id as app_id,
json_build_object(
'urls', array_agg(dt.started_at_url),
'counts', array_agg(dt.count)
) as data
from (
select a.id, c.started_at_url, count(c.id)
from apps a
left join conversations c on c.app_id = a.id
where started_at_url is not null and c.started_at::date > (current_date - (7 || ' days')::interval)::date
group by a.id, c.started_at_url
) as dt
group by dt.id
有什么建议吗?
由于
答案 0 :(得分:1)
为什么不使用
array_agg(
json_build_object(
'url', dt.started_at_url,
'count', dt.count
)
)
而不是
json_build_object(
'urls', array_agg(dt.started_at_url),
'counts', array_agg(dt.count)
)