如何使用 Rails 4.2 和 Postgresql 9.4 计算 jsonb 字段的平均值?
How to calculate average values of a jsonb field with Rails 4.2 and Postgresql 9.4?
我有一个 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 ->>
.
这个returns数据类型text
。要计算平均值,您需要一个数字类型。转换为 numeric
因为这个可以处理任何数字数据。
我有一个 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 ->>
.
这个returns数据类型text
。要计算平均值,您需要一个数字类型。转换为 numeric
因为这个可以处理任何数字数据。