我有一个 jsonb 列,它存储多个字段的值,如下所示:
{a: "0.5", b: "0.9" }
我需要从记录集合中获取平均“a”值。
如果它不是一个 jsonb 列,那么它非常简单,如下所示:
Apples.average(:a)
但现在需要的是这样的:
Apples.average(:my_numbers => {:a})
或者
Apples.average("my_numbers['a']")
最有效的方法是什么?
我有一个 jsonb 列,它存储多个字段的值,如下所示:
{a: "0.5", b: "0.9" }
我需要从记录集合中获取平均“a”值。
如果它不是一个 jsonb 列,那么它非常简单,如下所示:
Apples.average(:a)
但现在需要的是这样的:
Apples.average(:my_numbers => {:a})
或者
Apples.average("my_numbers['a']")
最有效的方法是什么?
SQL 查询将是:
SELECT avg((my_numbers->>'a')::numeric)
FROM tbl;
用于获取/列中给定键值的Postgres 运算符json
jsonb
->>
是.
这将返回数据类型text
。要计算平均值,您需要一个数字类型。投射到,numeric
因为这个可以处理任何数字数据。