【发布时间】:2018-07-12 23:39:24
【问题描述】:
假设我有一个包含以下格式数据的数据库
| id | name | rating |
-----------------------------------------------------------------|
| 1 | first | {"looks": 20, "quality": 20, "quantity": 20}|
-----------------------------------------------------------------|
| 2 | second | {"looks": 30, "quality": 40, "quantity": 20}|
------------------------------------------------------------------
首先,我需要获取 json 对象中每个项目的评分平均值。例如,获取 looks、quality 和 quantity 的平均值,用于项目 first 和 second。第一项的平均评分为 20,
并且项目second 的平均评分为30。然后得到这两个项目的平均评分,即20 和30,最终结果为25。
我想使用 Laravel、Eloquent 查询构建器来实现它,但我不介意以原始 sql 格式获取它。我正在使用 Postgres 数据库。
我找到了this 答案,但它只使用单个键而不是多行来处理 json。任何帮助将不胜感激。
【问题讨论】:
-
你知道JSON列中的所有键吗?
-
是的,我知道所有的钥匙。它们对于所有行都是相同的。
-
您应该尝试在单独的列中进行此类计算
-
我同意...但是这已经在生产中的实时系统上。
-
虽然你得到了答案,但是对于 100 或 1000 行来说太慢了。
标签: sql json postgresql laravel eloquent