我有一个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;
The Postgres operator to get the value for a given key in a
json
/ jsonb
column is ->>
。这将返回数据类型
text
。要计算平均值,您需要一个数字类型。转换为numeric
,因为这个可以处理任何数字数据。关于ruby-on-rails - 如何使用Rails 4.2和Postgresql 9.4计算jsonb字段的平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28855247/