使用联接查询JSONB字段



我有一个包含两个表的数据库。一个包含事件&另一个包含这些活动的参与者。这些事件有一个jsonb字段,其中包含一个具有"duration"属性的对象数组

事件

id 名称 出现次数
1 "The Great Beyond [{"持续时间":100},{"连续时间":200},{'持续时间":300}]
2 ";"最后的倒计时"> [{"持续时间":50}]
3 ";《下一个平原》

您可以计算子查询中的持续时间。你已经拥有了所需的大部分代码,你只需要移动它,例如:

SELECT
events.id AS "ID",
events.name AS "Name",
(SELECT coalesce(SUM((occurrences_arry->>'duration')::int), 0)
FROM jsonb_array_elements(events.occurrences) as occurrences_arry) as "Duration",
COUNT(attendees.*) as "Attendees"
FROM
events
INNER JOIN attendees on attendees.event_id = events.id
GROUP BY events.id

如果没有行,则SUM返回null,因此在这种情况下,我使用coalesce默认为0。

相关内容

  • 没有找到相关文章

最新更新