Atualização:ok
Primeiro, eu definitivamente recomendaria normalizar um pouco os dados. Você já tentou armazenar apenas os objetos na coluna de detalhes? Se você precisasse armazenar grupos de dados com cada ID de amostra, você pode usar uma tabela relacionada. IE :)
Amostra
id int auto incremento
mysql> create table Sample (id int(11) not null auto_increment, primary key(id));
Detalhes
sample_id intrecord json
mysql> create table Details (sample_id int(11), record json);
Preencha seus dados
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"}');
Então você pode fazer algo como
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
Resultados
+---------------------------------------------------------------------+
| (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} |
+---------------------------------------------------------------------+
Se você não quiser (ou não puder) usar um conjunto de dados normalizado, talvez você possa procurar escrever um procedimento armazenado que faça um loop sobre suas colunas de detalhes e agregue os dados para cada um, com uma consulta que agrega os dois conjuntos de dados.