【问题标题】:PostgreSQL return result set of select as jsonPostgreSQL 以 json 形式返回 select 的结果集
【发布时间】:2021-12-15 16:24:53
【问题描述】:

我希望 psql 返回结果为 json 格式示例:

{
   "2021-10-27" : 324,
   "2021-10-26" : 14,
   "2021-10-28" : 24,
   "2021-10-30" : 4,
}

我的 SQL 是:

SELECT DATE(user.updated_at), COUNT(*) 
  FROM users AS user
 GROUP BY DATE(user.updated_at)

如何将上述 SQL 以 json 格式返回。 我使用 psql 版本 13。

谢谢。

【问题讨论】:

    标签: sql json postgresql


    【解决方案1】:

    您可以在嵌套当前的 SELECT 语句后使用 JSON_OBJECT_AGG() 函数,例如

    SELECT JSON_OBJECT_AGG( updated_at, cnt )
      FROM (
            SELECT DATE(updated_at) AS updated_at, COUNT(*) AS cnt 
              FROM users
             GROUP BY DATE(updated_at)
           ) AS u
    

    Demo

    【讨论】:

    • 感谢您的回复和演示!
    • 不客气@mgi
    【解决方案2】:
    SELECT
    json_build_object(
        'current_date', json_agg(users.current_date),
        'current_date', json_agg(users.current_date)
    ) FROM users
    

    注意:“current_date 是用户表中的日期值”

    【讨论】:

    • 谢谢,但您的回答不会得到与我的 sql 相同的结果。它会将 current_date 两次呈现为 json。结果应该是日期和计数(按日期分组)
    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2015-06-07
    • 1970-01-01
    相关资源
    最近更新 更多