从 MySQL 中的 JSON 字符串中提取密钥

var*_*man 5 mysql sql mysql-workbench

我的表包含 json 格式的字符串。我需要得到每个键的总和和平均值。

+----+------------------------------------------------------------------------------------+------------+
| id | json_data                                                                          | subject_id |
+----+------------------------------------------------------------------------------------+------------+
| 1  | {"id": "a", "value": "30"}, {"id": "b", "value": "20"}, {"id": "c", "value": "30"} | 1          |
+----+------------------------------------------------------------------------------------+------------+
| 2  | {"id": "a", "value": "40"}, {"id": "b", "value": "50"}, {"id": "c", "value": "60"} | 1          |
+----+------------------------------------------------------------------------------------+------------+
| 3  | {"id": "a", "value": "20"}                                                         | 1          |
+----+------------------------------------------------------------------------------------+------------+
Run Code Online (Sandbox Code Playgroud)

预期结果是

    {"id": "a", "sum": 90, "avg": 30},
    {"id": "b", "sum": 70, "avg": 35},
    {"id": "c", "sum": 120, "avg": 40}
Run Code Online (Sandbox Code Playgroud)

我试过了

SELECT (
  JSON_OBJECT('id', id, 'sum', sum_data, 'avg', avg_data)
) FROM (
  SELECT 
    JSON_EXTRACT(json_data, "$.id") as id, 
    SUM(JSON_EXTRACT(json_data, "$.sum_data")) as sum_data, 
    AVG(JSON_EXTRACT(json_data, "$.avg_data")) as avg_data
  FROM Details 
  GROUP BY JSON_EXTRACT(json_data, "$.id")
) as t 
Run Code Online (Sandbox Code Playgroud)

但没有运气。我该如何解决这个问题?