अपडेट करें:ठीक है
सबसे पहले, मैं निश्चित रूप से डेटा को थोड़ा सामान्य करने की सलाह दूंगा। क्या आपने केवल वस्तुओं को विवरण कॉलम में संग्रहीत करने का प्रयास किया है? यदि आपको प्रत्येक नमूना आईडी के साथ डेटा के समूह को संग्रहीत करने की आवश्यकता है, तो आप संबंधित तालिका का उपयोग कर सकते हैं। आईई :)
नमूना
आईडी इंट ऑटो इंक्रीमेंट
mysql> create table Sample (id int(11) not null auto_increment, primary key(id));
विवरण
नमूना_आईडी इंटरकॉर्ड जसन
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} |
+---------------------------------------------------------------------+
यदि आप सामान्यीकृत डेटासेट का उपयोग नहीं करना चाहते हैं (या नहीं कर सकते हैं), तो शायद आप एक संग्रहित प्रक्रिया लिखने पर गौर कर सकते हैं जो आपके विवरण कॉलम पर लूप करता है और प्रत्येक के लिए डेटा एकत्र करता है, एक क्वेरी के साथ जो दोनों को जोड़ता है डेटासेट।