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

MySQL पिवट टेबल हेड स्क्रैचर

जैसा कि पहले ही उल्लेख किया गया है, MySQL अपने आप पिवट करने के लिए नहीं बनाया गया है और यदि संभव हो तो आपको शायद कोड में पिवट करना चाहिए, लेकिन इसे छोड़कर, नीचे कुछ उदाहरण एसक्यूएल है जो आपको चाहिए। यह मानते हुए कि आपकी वास्तविक तालिका कुछ अर्थों में परिवर्तनशील है (जैसे आपके पास कितने q[x] कॉलम हैं, या आपके पास कितने सुपर_आईडी हैं), आप इसे आवश्यक SQL को गतिशील रूप से उत्पन्न और निष्पादित करने के लिए एक संग्रहीत कार्यविधि में लपेट सकते हैं।

टेस्टटेबल नाम की एक प्रारंभिक तालिका मानते हुए:

mysql> select * from testTable;
+----------+--------+------+------+
| super_id | cat_id | qa   | qb   |
+----------+--------+------+------+
|        1 |      1 |    5 |    5 | 
|        1 |      2 |    2 |    5 | 
|        1 |      3 |    3 |    4 | 
|        2 |      4 |    5 |    3 | 
|        2 |      5 |    3 |    4 | 
|        2 |      6 |    4 |    2 | 
+----------+--------+------+------+
6 rows in set (0.00 sec)

निम्नलिखित एसक्यूएल का प्रयोग करें:

SELECT
    'qa' q,
    SUM( CASE WHEN super_id = 1 THEN qa ELSE 0 END )/SUM( CASE WHEN super_id = 1 THEN 1 ELSE 0 END ) super_id_1,
    SUM( CASE WHEN super_id = 2 THEN qa ELSE 0 END )/SUM( CASE WHEN super_id = 2 THEN 1 ELSE 0 END ) super_id_2
FROM
    testTable
UNION ALL
SELECT
    'qb' q,
    SUM( CASE WHEN super_id = 1 THEN qb ELSE 0 END )/SUM( CASE WHEN super_id = 1 THEN 1 ELSE 0 END ) super_id_1,
    SUM( CASE WHEN super_id = 2 THEN qb ELSE 0 END )/SUM( CASE WHEN super_id = 2 THEN 1 ELSE 0 END ) super_id_2
FROM
    testTable
;

इस परिणाम को प्राप्त करने के लिए:

+----+------------+------------+
| q  | super_id_1 | super_id_2 |
+----+------------+------------+
| qa |     3.3333 |     4.0000 | 
| qb |     4.6667 |     3.0000 | 
+----+------------+------------+
2 rows in set (0.00 sec)

(संपादित करें:स्वरूपण)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जांचें कि PHP डेटाटाइम स्टैम्प सही है?

  2. MySQL - कॉलम को पंक्तियों में अनपिवट कैसे करें?

  3. चेतावनी:mysql_result() [function.mysql-result]:लाइन 11 पर प्रोफ़ाइल.php में MySQL परिणाम अनुक्रमणिका 5 पर पंक्ति 0 पर जाने में असमर्थ

  4. कैलेंडर के लिए mySQL के लिए लूप करते समय json_encode () सरणी

  5. संबंधपरक डेटाबेस में ऑब्जेक्ट-ओरिएंटेड जैसी संरचनाएं