【问题标题】:How sum query json array object base on other column on postgresql如何基于postgresql上的其他列求和查询json数组对象
【发布时间】:2022-06-10 18:04:24
【问题描述】:

我使用 postgres 14.2 并有 3 列示例 namename_addsaditional

并且有规则:

  1. namename_adds 可以填写相同的值,也可以不同。 示例 -> name (john)name_adds (doe) 或两者的值为 (john)
  2. 附加列可以是下面的 2 格式值
  • 第一个值可以是
{"default":[{"value_1": 100, "value_2": 0.1},{"value_1": 200, "value_2": 0.2}], 
 "non_default":[{"value_1": 200, "value_2": 0.1}, {"value_1": 400, "value_2": 0.1}]}
  • 第二个值可以是
[
{
    "value_1": 10,
    "value_2": 11
},
{
    "value_1": 1,
    "value_2": 19
}
]
  1. 求和默认值 -> value_1 (name == name_adds)
  2. 汇总 non_default -> value_1 (name != name_adds)

如何根据规则点 3 和 4 在点 2 上对格式 1 或 2 求和。对于如下逻辑

if (name == name_adds) {
    if (additional contain default) {
       sum (default->value_1)
    } else {
       // format 2.2
       sum (value_1)
    }
} else {
    if (additional contain non_default) {
       sum (default->value_1)
    } else {
       // format 2.2
       sum (value_1)
    }
}

预期结果

  1. 如果 (name == name_adds) 结果 sumData -> 300 或 sumData -> 11
  2. 如果 (name != name_adds) 结果 sumData -> 600 或 sumData -> 11

【问题讨论】:

  • 在您的问题中,第二个值不包含默认值,也不包含非默认值。

标签: sql postgresql


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
相关资源
最近更新 更多