如何使用postgres生成json对象作为键值?

时间:2017-07-22 03:56:31

标签: json postgresql statistics aggregate-functions

我试图从我的数据库中提取一些统计数据。我有一张_employees表,我希望按国家/地区计算员工数量。假设_employees表有一列country,我有一个关于聚合计数的键值表示的查询。

select json_object_agg(key, value) 
from (
        select distinct e.country 
        from _employees as e group by (e.country)
    ) as key, 
    (
        select distinct count(1) 
        from _employees as e 
        group by(e.country)
    ) as value;

我想要这样的数据

{
     "ET": 100,
     "JM": 245 // And it will go on like this
}

但我收到了以下错误

  

键值必须是标量,而不是数组,复合或json。

可以这样做吗?有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:4)

在内部查询中选择具有每个国家/地区员工数量的国家/地区:

select json_object_agg(country, count)
from (
    select country, count(*)
    from _employees
    group by 1
    ) s;