Актуализация:Добре
Първо, определено бих препоръчал да нормализирате малко данните. Опитвали ли сте да съхранявате само обектите в колоната с подробности? Ако трябва да съхранявате групи данни с всеки примерен идентификатор, можете да използвате свързана таблица. IE :)
Извадка
id int автоматично увеличение
mysql> create table Sample (id int(11) not null auto_increment, primary key(id));
Подробности
sample_id intrecord json
mysql> create table Details (sample_id int(11), record json);
Попълнете вашите данни
insert into Sample (id) values (1);
insert into Sample (id) values (2);
insert into Details (sample_id, record) values
(1, '{"id": 1, "name": "T1", "amount": "34.34", "percentage": "45"}'),
(1, '{"id": 3, "name": "T3", "amount": "30.34", "percentage": "45"}'),
(1, '{"id": 2, "name": "T2", "amount": "14.34", "percentage": "15"}');
insert into Details (sample_id, record) values
(2, '{"id": 1, "name": "T1", "amount": "34.34", "percentage": "45"}'),
(2, '{"id": 2, "name": "T2", "amount": "30.34", "percentage": "45"}'),
(2, '{"id": 4, "name": "T4", "amount": "14.34", "percentage": "15"}');
След това можете да направите нещо като
SELECT (
JSON_OBJECT('id', id, 'amount', amount, 'percentage', percentage)
) FROM (
SELECT
JSON_EXTRACT(record, "$.id") as id,
SUM(JSON_EXTRACT(record, "$.amount")) as amount,
AVG(JSON_EXTRACT(record, "$.percentage")) as percentage
FROM Details
GROUP BY JSON_EXTRACT(record, "$.id")
) as t
Резултати
+---------------------------------------------------------------------+
| (JSON_OBJECT('id', id, 'amount', amount, 'percentage', percentage)) |
+---------------------------------------------------------------------+
| {"id": 1, "amount": 68.68, "percentage": 45} |
| {"id": 2, "amount": 44.68, "percentage": 30} |
| {"id": 3, "amount": 30.34, "percentage": 45} |
| {"id": 4, "amount": 14.34, "percentage": 15} |
+---------------------------------------------------------------------+
Ако не искате (или не можете) да използвате нормализиран набор от данни, тогава може би бихте могли да разгледате писане на съхранена процедура, която обикаля колоните с подробности и обобщава данните за всяка една, със заявка, която обобщава двете набори от данни.