我有一个Postgres语句,它返回对表的value
列中的json blob的提取/迭代。我可以使用下面的查询获得一级深度的计数,但我无法再进行更深的计数。我使用的是:
select jsonb_array_length(value -> 'team') as team_count
这返回了正确的计数,但我似乎无法利用它来计算每个团队下的names
。
在一个完美的世界里,我希望我的结果返回4行这样的结果(标题和匹配的名称计数(:
Product Owner, 2
Technical Product Manager, 2
Data Modeler, 0
Engineer, 0
我该如何修改此查询以获得team
下的names
计数?我尝试了各种各样的东西,但没有什么能让我接近。
Json样本如下。
"team":[
{
"title":"Product Owner",
"names":[
"John Smith",
"Jane Doe"
]
},
{
"title":"Technical Project Manager",
"names":[
"Fred Flintstone",
"Barney Rubble"
]
},
{
"title":"Data Modeler"
},
{
"title":"Engineer"
}
您似乎在寻找
SELECT
role -> 'title' AS team_role,
jsonb_array_length(role -> 'names') AS member_count
FROM jsonb_array_elements(value -> 'team') AS team(role)