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

MySQL में पिवट टेबल कैसे बनाएं

डेटा विश्लेषण के लिए पिवट टेबल उपयोगी हैं, जिससे आप आसानी से जानकारी प्राप्त करने के लिए पंक्ति मानों को कॉलम के रूप में प्रदर्शित कर सकते हैं। हालाँकि, MySQL में पिवट टेबल बनाने के लिए कोई फ़ंक्शन नहीं है। तो, आपको MySQL में पिवट टेबल बनाने के लिए SQL क्वेरी लिखनी होगी। सौभाग्य से MySQL में पिवट टेबल बनाने के कई तरीके हैं। आइए उनमें से प्रत्येक को शीघ्रता से देखें।

MySQL में पिवट टेबल कैसे बनाएं

यहाँ MySQL में पिवट टेबल बनाने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है

CREATE TABLE exams (
id int(11) NOT NULL auto_increment,
name varchar(15),
exam int,
score int,
PRIMARY KEY (id)
);

insert into exams (name,exam,score) values ('Bob',1,70);
insert into exams (name,exam,score) values ('Bob',2,77);
insert into exams (name,exam,score) values ('Bob',3,71);
insert into exams (name,exam,score) values ('Bob',4,70);

insert into exams (name,exam,score) values ('Sue',1,89);
insert into exams (name,exam,score) values ('Sue',2,87);
insert into exams (name,exam,score) values ('Sue',3,88);
insert into exams (name,exam,score) values ('Sue',4,89);

mysql> select * from exams;
+------+------+------+-------+
| id   | name | exam | score |
+------+------+------+-------+
|   1  |  Bob |   1  |   70  |
|   2  |  Bob |   2  |   77  |
|   3  |  Bob |   3  |   71  |
|   4  |  Bob |   4  |   70  |
|   5  |  Sue |   1  |   89  |
|   6  |  Sue |   2  |   87  |
|   7  |  Sue |   3  |   88  |
|   8  |  Sue |   4  |   89  |
+------+------+------+-------+


मान लें कि आप परीक्षा . द्वारा तालिका को पिवट करना चाहते हैं प्रत्येक छात्र के लिए 1 पंक्ति और प्रत्येक परीक्षा के लिए 1 कॉलम बनाने के लिए कॉलम, जैसा कि नीचे दिखाया गया है।

+--------+-----------+-----------+-----------+------------+
|   name |    exam1  |    exam2  |    exam3  |    exam4   |
+--------+-----------+-----------+-----------+------------+
|   Bob  |     70    |     77    |     71    |     70     |
|   Sue  |     89    |     87    |     88    |     89     |
+--------+-----------+-----------+-----------+------------+

आप IF या CASE स्टेटमेंट का उपयोग करके MySQL में एक पिवट टेबल बना सकते हैं।

बोनस पढ़ें: MySQL में माध्यिका की गणना कैसे करें

IF स्टेटमेंट का उपयोग करके MySQL में पिवट टेबल बनाएं

यहां SQL क्वेरी IF कथन का उपयोग करके पंक्तियों को स्तंभों में स्थानांतरित करती है।

SELECT name,
sum(IF(exam=1, score, NULL)) AS exam1,
sum(IF(exam=2, score, NULL)) AS exam2,
sum(IF(exam=3, score, NULL)) AS exam3,
sum(IF(exam=4, score, NULL)) AS exam4
FROM exams
GROUP BY name;
+--------+-----------+-----------+-----------+------------+
|   name |    exam1  |    exam2  |    exam3  |    exam4   |
+--------+-----------+-----------+-----------+------------+
|   Bob  |     70    |     77    |     71    |     70     |
|   Sue  |     89    |     87    |     88    |     89     |
+--------+-----------+-----------+-----------+------------+

उपरोक्त क्वेरी में, आपको समूह द्वारा . करने की आवश्यकता है नाम कॉलम क्योंकि आप प्रत्येक छात्र के लिए 1 पंक्ति चाहते हैं। साथ ही, आपको अपने द्वारा बनाए जाने वाले प्रत्येक कॉलम के लिए 1 शर्त प्रदान करनी होगी, अर्थात प्रत्येक परीक्षा के लिए 1 शर्त

केस स्टेटमेंट का उपयोग करके MySQL में पिवट टेबल बनाएं

CASE स्टेटमेंट का उपयोग करके पंक्तियों को कॉलम में बदलने के लिए SQL क्वेरी यहां दी गई है।

SELECT name,
sum(CASE WHEN exam=1 THEN score ELSE NULL END) AS exam1,
sum(CASE WHEN exam=2 THEN score ELSE NULL END) AS exam2,
sum(CASE WHEN exam=3 THEN score ELSE NULL END) AS exam3,
sum(CASE WHEN exam=4 THEN score ELSE NULL END) AS exam4
FROM exams
GROUP BY name;
+--------+-----------+-----------+-----------+------------+
|   name |    exam1  |    exam2  |    exam3  |    exam4   |
+--------+-----------+-----------+-----------+------------+
|   Bob  |     70    |     77    |     71    |     70     |
|   Sue  |     89    |     87    |     88    |     89     |
+--------+-----------+-----------+-----------+------------+

उपरोक्त क्वेरी उसी के समान काम करती है जो ऊपर IF स्थिति का उपयोग करती है। आपको उस कॉलम के आधार पर समूह बनाना होगा जिसके द्वारा आप अपना डेटा पिवट करना चाहते हैं, यानी नाम . साथ ही, आपको प्रत्येक परीक्षा संख्या के लिए 1 केस स्टेटमेंट को परिभाषित करने की आवश्यकता है क्योंकि आप प्रत्येक परीक्षा के लिए अलग कॉलम बनाना चाहते हैं।

आप अपनी पिवट टेबल में परीक्षा के अंकों को भी जोड़ सकते हैं। उदाहरण के लिए, यदि आप परीक्षा 1 और परीक्षा 2 के अंकों को जोड़ना चाहते हैं और उन्हें एक ही कॉलम में दिखाना चाहते हैं, तो आप निम्न क्वेरी का उपयोग कर सकते हैं।

SELECT name,
sum(CASE WHEN exam=1 or exam=2 THEN score ELSE NULL END) AS exam12,
sum(CASE WHEN exam=3 THEN score ELSE NULL END) AS exam3,
sum(CASE WHEN exam=4 THEN score ELSE NULL END) AS exam4
FROM exams
GROUP BY name;
+--------+------------+-----------+-----------+------------+
|   name |    exam12  |    exam2  |    exam3  |    exam4   |
+--------+------------+-----------+-----------+------------+
|   Bob  |     147    |     77    |     71    |     70     |
|   Sue  |     176    |     87    |     88    |     89     |
+--------+------------+-----------+-----------+------------+

उपरोक्त तालिका में, परीक्षा 1 और परीक्षा 2 के अंकों को केवल 1 केस स्टेटमेंट की स्थिति को संशोधित करके, और दूसरे केस स्टेटमेंट को हटाकर, एक कॉलम परीक्षा 12 में जोड़ा और प्रदर्शित किया गया है।

आप MySQL में पिवट टेबल बनाने के लिए अपनी आवश्यकता के अनुसार उपरोक्त प्रश्नों को कस्टमाइज़ कर सकते हैं। परिणाम को तालिका में प्लॉट करने के लिए आप रिपोर्टिंग टूल का भी उपयोग कर सकते हैं। यहाँ Ubiq का उपयोग करके बनाई गई तालिका का एक उदाहरण दिया गया है।

क्या आप जानते हैं कि आप केवल ड्रैग एंड ड्रॉप का उपयोग करके Ubiq में पिवट टेबल बना सकते हैं?

यदि आप MySQL डेटाबेस से पिवट टेबल, चार्ट और डैशबोर्ड बनाना चाहते हैं, तो आप Ubiq को आजमा सकते हैं। हम 14-दिन का निःशुल्क परीक्षण प्रदान करते हैं।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL, MS SQL सर्वर, MySQL, और SQLite में शेष

  2. MySQL में एक फ्लोट का चयन करना

  3. SQL क्वेरी एकाधिक तालिकाओं से डेटा लौटाती है

  4. PHP में लूप के साथ मैं एक ही आईडी डेटा कैसे सूचीबद्ध कर सकता हूं?

  5. दिनांक/समय सीमा के बीच डेटा चुनें