【发布时间】:2017-11-13 14:20:47
【问题描述】:
假设我在 Postgres 数据库中有一个 jsonb 类型的列,称为 info。其中一个字段是字节,它以整数形式存储在 info 字段中。
如果我尝试对 Ecto 查询中 info => bytes 字段的值求和,如下所示:
total_bytes = Repo.one(from job in FilesTable,
select: sum(fragment("info->>'bytes'")))
我收到错误函数 sum(text) 不存在。
有没有办法编写上面的查询,以便 info => bytes 可以求和,或者我必须从数据库中的每一行中选择该字段,然后使用 Elixir将值相加?
【问题讨论】:
-
fragment("sum(info->>'bytes'))")? -
(info->>'bytes')::integer -
试试
sum(fragment("(?->>'bytes')::integer", job.info)))。 -
谢谢@Dogbert 以上是完美的。
标签: postgresql elixir ecto