我有一个表,其中包含像id,国家,城市,容量这样的数据。容量是一个JSON数组字段,它具有像['totalCapacity':100.0},'totalCapacity':90.0},'totalCapacity':80.0},'totalCapacity':80.0}]这样的值,因此表中的行看起来像
| ID|国家|市|能力|
| --|--|--|--|
| 1 |美国|New-York| ['totalCapacity':100.0},'totalCapacity':90.0},'totalCapacity':80.0},'totalCapacity':80.0}]|
现在我想要的结果是
| ID|国家|市|总容量|
| --|--|--|--|
| 1 |美国|New-York| 350 |
即每行totalCapacity之和。
试过这个
SELECT
id,
country,
city,
SUM(JSON_VALUE(capacity, '$.totalCapacity')) AS total_capacity
FROM
A
GROUP BY
id,
country,
city;
字符串
但在total_capacity中获取空值
3条答案
按热度按时间9cbw7uwe1#
你可以
CROSS JOIN LATERAL
一个JSON_TABLE
并聚合成:字符串
其中,对于样本数据:
型
产出:
| ID|国家|市|总容量|
| --|--|--|--|
| 1 |美国|New-York| 350 |
fiddle
wnvonmuf2#
字符串
wxclj1h53#
从21开始,你也可以直接在json_value中使用sum()项函数:
字符串