相关疑难解决方法(0)

选择 json_agg 中的列

我有一个查询,如:

SELECT a.id, a.name, json_agg(b.*) as "item"
  FROM a
  JOIN b ON b.item_id = a.id
 GROUP BY a.id, a.name;
Run Code Online (Sandbox Code Playgroud)

如何选择在列b,所以我没有b.item_id在JSON对象?

我读过关于ROW,但它返回一个 JSON 对象,如:

{"f1": "Foo", "f2": "Bar"}
Run Code Online (Sandbox Code Playgroud)

一旦获取它以匹配正确的列键,我将需要重新映射 JSON 对象。我想避免这种情况并保留原始列名。

postgresql group-by row json

41
推荐指数
4
解决办法
10万
查看次数

返回总行数和选定(聚合)数据

我有一个从表格中选择一些数据的功能。我想返回所选数据和该表中的总行数。

我怎样才能做到这一点,或者我怎样才能以最有效的方式获得相同的结果?

我尝试了几件事,最后得到了下面的代码,现在这是我想要的格式,但count(*) over () as total_count会一直返回 1,我需要它返回的是该records选择的总行数。

SELECT 
row_to_json(selected_records) as data
FROM
(   
    SELECT
    count(*) over () as total_count,
    array_to_json(array_agg(row_to_json(records))) as data
    FROM (
        SELECT
            sum(entrances) as entrances
        FROM report_la
        WHERE profile_id = 3777614
        GROUP BY landing_path_id
        limit 10 offset 0
    ) records
) as selected_records
Run Code Online (Sandbox Code Playgroud)

更新,下面的代码产生了我想要的结果,如果我可以total_countrecords选择中隐藏该列就好了

SELECT 
row_to_json(selected_records) as data
FROM
(   
    SELECT
    min(total_count) as total_count
    ,array_to_json(array_agg(row_to_json(records))) as data
    FROM (
        SELECT
            sum(entrances) as entrances
            ,count(*) over () as total_count …
Run Code Online (Sandbox Code Playgroud)

postgresql aggregate window-functions postgresql-9.3

6
推荐指数
1
解决办法
2万
查看次数

从布尔列构建数组

我有诸如role1role2role3等列。它们都是布尔值。

\n\n

我想在此表上创建一个视图,该视图具有类型为 的角色列text[]。如果有列TRUE, FALSE, TRUE,则视图将包含["role1", "role3"].

\n\n

有什么好的方法可以做到这一点,并且不会爆炸成大量的CASE WHEN\xc2\xb4s 吗?澄清一下,我可以使用 O(n) CASE WHEN,但不能使用 O(2^n) ,这是目前似乎需要的。:)

\n

postgresql array unpivot

2
推荐指数
1
解决办法
1135
查看次数