Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL JSON ऑब्जेक्ट्स का कुल योग

अपडेट करें:ठीक है

सबसे पहले, मैं निश्चित रूप से डेटा को थोड़ा सामान्य करने की सलाह दूंगा। क्या आपने केवल वस्तुओं को विवरण कॉलम में संग्रहीत करने का प्रयास किया है? यदि आपको प्रत्येक नमूना आईडी के साथ डेटा के समूह को संग्रहीत करने की आवश्यकता है, तो आप संबंधित तालिका का उपयोग कर सकते हैं। आईई :)

नमूना

आईडी इंट ऑटो इंक्रीमेंट

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}                        |
+---------------------------------------------------------------------+

यदि आप सामान्यीकृत डेटासेट का उपयोग नहीं करना चाहते हैं (या नहीं कर सकते हैं), तो शायद आप एक संग्रहित प्रक्रिया लिखने पर गौर कर सकते हैं जो आपके विवरण कॉलम पर लूप करता है और प्रत्येक के लिए डेटा एकत्र करता है, एक क्वेरी के साथ जो दोनों को जोड़ता है डेटासेट।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल बहु-किरायेदार वास्तुकला, एकाधिक किरायेदारों तक पहुंच की गुंजाइश

  2. आंतरिक जुड़ाव का उपयोग करते समय मुझे अलग परिणाम क्यों मिलते हैं

  3. mysql को समझना

  4. MySQL - पर्ल:पर्ल उदाहरण में सबमिट किए गए ज़िप कोड के एक्स मील के भीतर ज़िप कोड की सरणी कैसे प्राप्त करें?

  5. अद्यतन डेटाबेस फ़ील्ड त्रुटि कोडइग्निटर