gpt4 book ai didi

sql - 如何在 Postgresql 中计算 jsonb 对象键?

转载 作者:行者123 更新时间:2023-12-02 19:39:59 26 4
gpt4 key购买 nike

我正在尝试查找哪些 jsonb 键是我的 data 字段中最受欢迎的键。我能够通过以下查询获取所有键的名称:

select jsonb_object_keys(data) as key
from client
group by key;

当我尝试像平常一样添加计数时:

select jsonb_object_keys(data) as key, count(jsonb_object_keys(data))
from client
group by key;

我收到此错误:

ERROR: aggregate function calls cannot contain set-returning function calls

有没有办法计算 jsonb 对象的不同键?

示例数据:

data
{"a": "xyz"}
{"b": "assa", "c": "134323"}
{"c": "123"}
{"c": "12324", "a": "xysaz"}

期望的输出:

key count(key)
a 2
b 1
c 3

最佳答案

jsonb_object_keys 是一个集合返回函数——基本上是一个表。您想在 FROM 子句中引用它,所以我建议:

select k as key, count(*)
from client c cross join lateral
jsonb_object_keys(c.data) k
group by k;

横向实际上是可选的。但是,我更喜欢包含它,因为否则解析会很尴尬(为什么 c.data 解析正确?)。

关于sql - 如何在 Postgresql 中计算 jsonb 对象键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60393148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com