【发布时间】:2022-06-10 18:04:24
【问题描述】:
我使用 postgres 14.2 并有 3 列示例 name、name_adds、aditional
并且有规则:
- name 和 name_adds 可以填写相同的值,也可以不同。 示例 -> name (john) 和 name_adds (doe) 或两者的值为 (john)
- 附加列可以是下面的 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
}
]
- 求和默认值 -> value_1 (name == name_adds)
- 汇总 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)
}
}
预期结果
- 如果 (name == name_adds) 结果 sumData -> 300 或 sumData -> 11
- 如果 (name != name_adds) 结果 sumData -> 600 或 sumData -> 11
【问题讨论】:
-
在您的问题中,第二个值不包含默认值,也不包含非默认值。
标签: sql postgresql