Pembaruan:Oke
Pertama, saya pasti akan merekomendasikan sedikit menormalkan data. Sudahkah Anda mencoba menyimpan hanya objek ke dalam kolom detail? Jika Anda perlu menyimpan grup data dengan setiap ID Sampel, Anda dapat menggunakan tabel terkait. yaitu :)
Contoh
id int kenaikan otomatis
mysql> create table Sample (id int(11) not null auto_increment, primary key(id));
Detail
sample_id intrecord json
mysql> create table Details (sample_id int(11), record json);
Isi data Anda
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"}');
Kemudian Anda dapat melakukan sesuatu seperti
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
Hasil
+---------------------------------------------------------------------+
| (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} |
+---------------------------------------------------------------------+
Jika Anda tidak ingin (atau tidak bisa) menggunakan dataset yang dinormalisasi, maka mungkin Anda mungkin melihat ke dalam penulisan prosedur tersimpan yang mengulang kolom detail Anda dan menggabungkan data untuk masing-masing kolom, dengan kueri yang menggabungkan keduanya kumpulan data.