Postgres计数数组jsonb字段中的项目数

时间:2019-08-06 15:21:00

标签: postgresql

我有一个像这样的postgres表

activity

comment    likes
Hi         ["bill", "susan"]
Hello      ["susan", "john", "joe"]

我正在尝试获得喜欢的总数。

喜欢的类型为jsonb

我知道我可以选择所有数据,然后以增量递增的方式循环遍历并计数,但是一旦您获取大量数据,就会造成性能问题。

是否可以通过单个查询来做到这一点?

对于上面的示例,喜欢的总数应为5

2 个答案:

答案 0 :(得分:1)

从活动中选择总和(array_length(likes,1));

答案 1 :(得分:0)

@dassum的答案很接近,我只需要对其进行调整以支持jsonb

SELECT SUM(jsonb_array_length(likes)) FROM activity;