Ale*_*sov 2 sql postgresql jsonb
我正在尝试查找哪些 jsonb 键是我所在领域中最受欢迎的键data。我能够通过以下查询获取所有键的名称:
select jsonb_object_keys(data) as key
from client
group by key;
Run Code Online (Sandbox Code Playgroud)
当我尝试像平常一样添加计数时:
select jsonb_object_keys(data) as key, count(jsonb_object_keys(data))
from client
group by key;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ERROR: aggregate function calls cannot contain set-returning function calls
Run Code Online (Sandbox Code Playgroud)
有没有办法计算 jsonb 对象的不同键?
样本数据:
data
{"a": "xyz"}
{"b": "assa", "c": "134323"}
{"c": "123"}
{"c": "12324", "a": "xysaz"}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
key count(key)
a 2
b 1
c 3
Run Code Online (Sandbox Code Playgroud)
jsonb_object_keys是一个集合返回函数——基本上是一个表。您想在条款中引用它FROM,所以我建议:
select k as key, count(*)
from client c cross join lateral
jsonb_object_keys(c.data) k
group by k;
Run Code Online (Sandbox Code Playgroud)
实际上是lateral可选的。但是,我更喜欢包含它,因为否则解析会很尴尬(为什么c.data解析正确?)。
| 归档时间: |
|
| 查看次数: |
1912 次 |
| 最近记录: |