【问题标题】:How to calculate average values of a jsonb field with Rails 4.2 and Postgresql 9.4?如何使用 Rails 4.2 和 Postgresql 9.4 计算 jsonb 字段的平均值?
【发布时间】:2015-03-04 13:03:56
【问题描述】:

我有一个 jsonb 列,它存储多个字段的值,如下所示:

{a: "0.5", b: "0.9" }

我需要从记录集合中获取平均“a”值。

如果它不是一个 jsonb 列,那么它相当简单,如下所示:

Apples.average(:a)

但现在需要的是这样的:

Apples.average(:my_numbers => {:a})

Apples.average("my_numbers['a']")

最有效的方法是什么?

【问题讨论】:

    标签: ruby-on-rails postgresql average jsonb


    【解决方案1】:

    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,因为这个可以处理任何数字数据。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2018-07-19
      • 2022-12-15
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多