【问题标题】:PostgreSQL avoid nested aggregate functionsPostgreSQL 避免嵌套聚合函数
【发布时间】:2017-09-09 00:34:36
【问题描述】:
    SELECT
        p.id AS id,
        json_agg((SELECT x FROM (SELECT 
            c.id, 
            c.name, 
            json_agg((SELECT y FROM (SELECT s.id, s.name) y)) AS js2
            ) x)) AS js1
    FROM p
    INNER JOIN s ON s.id = p.s_id
    INNER JOIN c ON c.s_id = p.s_id
    INNER JOIN cc ON c.id = cc.c_id AND p.c_id = cc.c_id
    GROUP BY p.c_id;

我想这样聚合我的sql,但是psql不允许我做js2。

错误:聚合函数调用不能嵌套 json_agg((SELECT y FROM (SELECT s.id, ...

我怎样才能避免这种情况?

【问题讨论】:

标签: postgresql


【解决方案1】:

尝试将js2中的json_agg改为row_to_json

 SELECT
        p.id AS id,
        json_agg((SELECT x FROM (SELECT 
            c.id, 
            c.name, 
            row_to_json((SELECT y FROM (SELECT s.id, s.name) y)) AS js2
            ) x)) AS js1
    FROM p
    INNER JOIN s ON s.id = p.s_id
    INNER JOIN c ON c.s_id = p.s_id
    INNER JOIN cc ON c.id = cc.c_id AND p.c_id = cc.c_id
    GROUP BY p.c_id;

-HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多