json - 如何使用postgres生成一个json对象作为键,值?

标签 json postgresql statistics aggregate-functions

我正在尝试从我的数据库中提取一些统计数据。我有一个 _employees 表,我想按国家/地区统计员 worker 数。假设 _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
}

但我有以下错误

key value must be scalar, not array, composite, or json.

这能做到吗?有没有更好的方法来解决这个问题?

最佳答案

在内部查询中选择国家和每个国家的雇员人数:

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

关于json - 如何使用postgres生成一个json对象作为键,值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45250495/

相关文章:

java - 有效的 Json 抛出 "Expected BEGIN_OBJECT but was STRING at line 1 column 4"

python - 如何使用装饰器使蜘蛛能够区分 scrapy 管道

sql - 在组查询中选择第一个

php - 在 Symfony Doctrine 查询构建器中使用 PostgreSQL NOT SIMILAR TO

php - Swift httppost 数据未插入到 MySQL 数据库

php - 对包含 JSON 数组的 JSON 字段进行 Laravel 5.4 查询

javascript - 使用 list.js 排序/搜索时列表项消失

r - 如何计算两个分布的卷积的 x 值?

python - scipy.stats.nanemean 文档?

algorithm - 将平面列表加权为正态分布