2

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

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

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

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

Apples.average(:a)

但现在需要的是这样的:

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

或者

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

最有效的方法是什么?

4

1 回答 1

7

SQL 查询将是:

SELECT avg((my_numbers->>'a')::numeric)
FROM   tbl;

用于获取/列中给定键值Postgres 运算符jsonjsonb->>是.

这将返回数据类型text。要计算平均值,您需要一个数字类型。投射到,numeric因为这个可以处理任何数字数据。

于 2015-03-04T18:13:56.873 回答