我有一个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/

10-13 05:21