我有一个简单的查询,SELECT name, grp FROM things;
会产生下表:
name | grp
------+-----
a | y
b | x
c | x
d | z
e | z
f | z
我想最终得到以下单个JSON对象:
{y: [a], x: [b,c], z: [d,e,f]}
我觉得我更接近查询SELECT grp, array_agg(name) as names FROM things GROUP BY grp;
,它给出了三行,其中“name”被压缩成一个数组,但我不知道从哪里开始将这些行压缩成一个数组单个JSON对象。
SELECT json_build_object(grp, array_agg(name)) as objects FROM things GROUP BY grp;
可能稍微靠近,因为这会导致单个JSON对象(如{y: [a]}
)的单列结果,但它们仍然是单个对象,因此可能不是正确的路径。
这是使用Postgresql 9.4。
答案 0 :(得分:6)
这里的关键似乎是json_object_agg函数,它没有与其余的json函数一起列出。
请参阅:http://www.postgresql.org/docs/9.4/static/functions-aggregate.html
以下查询确切地说明了我正在寻找的内容:
zfpath.getFileSystem().provider().checkAccess(zfpath, AccessMode.READ);
if (!Files.isWritable(zfpath))
this.readOnly = true;