count jsonb数组在postgres中的条件



我有一个postgres数据库,其中一些列数据存储如下:

tbody> <<tr>
guest_composition charing_age
[{"a" 1、"b": 1,"c": 1,"children_ages": [10 5 2, 0.1]}]3
[{"a" 1、"b": 1,"c": 1,"children_ages": [2.5, 1, 4]}]3

您可以使用SQL JSON路径函数提取所有儿童年龄的数组:

select jsonb_path_query_array(r.guest_composition, '$[*].children_ages[*] ? (@ > 3)')
from reservations r;

这个数组的长度就是你想要的计数:

select jsonb_array_length(jsonb_path_query_array(r.guest_composition, '$[*].children_ages[*] ? (@ > 3)'))
from reservations r;

我不清楚charging_age是否是一列,并且可以在每一行更改。如果是这种情况,您可以向JSON路径函数传递一个参数:

select jsonb_path_query_array(
r.guest_composition, '$[*].children_ages[*] ? (@ > $age)', 
jsonb_build_object('age', charging_age)
)
from reservations r;

相关内容

  • 没有找到相关文章

最新更新