कभी-कभी आपको MySQL में योग और उप-योग की गणना करने की आवश्यकता हो सकती है, या अपने डेटा में कुल पंक्तियाँ जोड़नी पड़ सकती हैं। विशेष रूप से उप-योगों की गणना करने के लिए यूनियन स्टेटमेंट का उपयोग करके डेटा एकत्र करना कठिन हो सकता है। MySQL रोलअप ऐसे उपयोग के मामलों के लिए उपयुक्त है। MySQL में कुल और उप-योग की गणना करने के लिए MySQL रोलअप का उपयोग करने का तरीका यहां दिया गया है।
MySQL रोलअप का उपयोग कैसे करें
यहाँ MySQL रोलअप का उपयोग करके कुल और उप-योग की गणना करने के चरण दिए गए हैं।
MySQL रोलअप आपको डेटा को आसानी से रोल अप करने और एक स्टेटमेंट का उपयोग करके उप-योग की गणना करने की अनुमति देता है। आप इसका उपयोग अपने डेटा में कुल पंक्तियों और उप-योग पंक्तियों को जोड़ने के लिए भी कर सकते हैं, बजाय उन्हें अलग-अलग गणना करने और UNION स्टेटमेंट का उपयोग करके परिणाम को संयोजित करने के लिए।
यहाँ MySQL ROLLUP का सिंटैक्स है।
SELECT column1, column2, column3, ... FROM table_name GROUP BY column1, column2,... WITH ROLLUP;
उपरोक्त क्वेरी ग्रुप बाय स्टेटमेंट का उपयोग करके डेटा एकत्र करने के समान है, सिवाय इसके कि आप ग्रुप बाय क्लॉज के बाद रोलअप कीवर्ड के साथ जोड़ते हैं।
उपरोक्त क्वेरी में, हम उन कॉलमों को निर्दिष्ट करते हैं जिन्हें हमें अपने क्वेरी परिणाम में SELECT क्लॉज में प्रदर्शित करने की आवश्यकता होती है। हमें तालिका के नाम का भी उल्लेख करना होगा। ग्रुप बाय क्लॉज में, हम उन कॉलमों को निर्दिष्ट करते हैं जिनके आधार पर हम डेटा एकत्र करना चाहते हैं।
बोनस पढ़ें :MySQL संस्करण की जांच कैसे करें
मान लें कि आपके पास निम्न तालिका बिक्री (order_date, बिक्री) है।
mysql> create table sales(order_date date,sale int); mysql> insert into sales values('2020-01-01',20), ('2020-01-02',25),('2020-01-03',15),('2020-01-04',30), ('2020-02-05',20),('2020-02-10',20),('2020-02-06',25), ('2020-03-07',15),('2020-03-08',30),('2020-03-09',20); mysql> select * from sales; +------------+------+ | order_date | sale | +------------+------+ | 2020-01-01 | 20 | | 2020-01-02 | 25 | | 2020-01-03 | 15 | | 2020-01-04 | 30 | | 2020-02-05 | 20 | | 2020-02-10 | 20 | | 2020-02-06 | 25 | | 2020-03-07 | 15 | | 2020-03-08 | 30 | | 2020-03-09 | 20 | +------------+------+
बोनस पढ़ें :MySQL में फॉरेन की चेक को डिसेबल कैसे करें
यहाँ MySQL रोलअप के लिए कुल मानों की गणना करने और तालिका में कुल पंक्ति जोड़ने के लिए SQL क्वेरी है। ग्रैंड टोटल को हमेशा अंतिम पंक्ति के रूप में जोड़ा जाता है, जिसमें ग्रुप बाय कॉलम को NULL मान दिया जाता है।
mysql> select * from sales group by order_date with rollup; +------------+------+ | order_date | sale | +------------+------+ | 2020-01-01 | 20 | | 2020-01-02 | 25 | | 2020-01-03 | 15 | | 2020-01-04 | 30 | | 2020-02-05 | 20 | | 2020-02-06 | 25 | | 2020-02-10 | 20 | | 2020-03-07 | 15 | | 2020-03-08 | 30 | | 2020-03-09 | 20 | | NULL | 20 | +------------+------+
उपरोक्त क्वेरी में हम order_date . तक रोलअप करते हैं कॉलम।
बोनस पढ़ें :MySQL में सीक्वेंस कैसे बनाएं
यदि आप ग्रुप बाय क्लॉज में एक से अधिक कॉलम निर्दिष्ट करते हैं, तो MySQL उनके बीच एक पदानुक्रम मान लेगा और तदनुसार डेटा रोलअप करेगा।
उदाहरण के लिए, यदि आप उल्लेख करते हैं
GROUP BY c1, c2, c3 WITH ROLLUP
तब MySQL मान लेगा
c1 > c2 > c3
इसलिए MySQL रोलअप का उपयोग करते समय ग्रुप बाय क्लॉज में कॉलम के क्रम से सावधान रहना महत्वपूर्ण है। मान लें कि आपके पास निम्न तालिका है।
mysql> create table sales(product varchar(255),order_date date,sale int); mysql> insert into sales values('A','2020-01-01',20),('B','2020-01-02',25), ('B','2020-01-03',15),('A','2020-01-04',30),('A','2020-01-05',20); mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+
बोनस पढ़ें :MySQL में दो तालिकाओं की तुलना कैसे करें
यहां उत्पाद और ऑर्डर_डेट कॉलम द्वारा डेटा रोलअप करने के लिए SQL क्वेरी है। इस मामले में, MySQL न केवल ग्रैंड टोटल की गणना करेगा और अंत में प्रदर्शित करेगा, बल्कि ग्रुप बाय क्लॉज में उल्लिखित प्रत्येक कॉलम के लिए कॉलम-वार सबटोटल की गणना भी करेगा, केवल पिछले एक को छोड़कर, यानी केवल उत्पाद कॉलम।
mysql> select product,order_date,sum(sale) from sales group by product,order_date with rollup; +---------+------------+-----------+ | product | order_date | sum(sale) | +---------+------------+-----------+ | A | 2020-01-01 | 20 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | | A | NULL | 70 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | B | NULL | 40 | | NULL | NULL | 110 | +---------+------------+-----------+
उपरोक्त परिणाम में, आप उत्पाद-वार योग और कुल योग को बोल्ड . के रूप में हाइलाइट करते हुए देखेंगे
यदि आप ग्रुप बाय क्लॉज में ऑर्डर_डेट और फिर प्रोडक्ट कॉलम का उल्लेख करते हैं तो यह परिणाम है। इस मामले में, MySQL ऑर्डर_डेट-वार कुल और कुल योग की गणना करेगा।
mysql> select product,order_date,sum(sale) from sales group by order_date,product with rollup; +---------+------------+-----------+ | product | order_date | sum(sale) | +---------+------------+-----------+ | A | 2020-01-01 | 20 | | NULL | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | NULL | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | NULL | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | NULL | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | | NULL | 2020-01-05 | 20 | | NULL | NULL | 110 | +---------+------------+-----------+
जैसा कि आप देख सकते हैं कि यदि आप ग्रुप बाय क्लॉज में उल्लिखित कॉलम के क्रम को बदलते हैं तो परिणाम भिन्न होते हैं। फिर भी, MySQL ROLLUP उप-योगों की शीघ्रता से गणना करने और MySQL में कुल पंक्ति जोड़ने का एक बहुत ही सुविधाजनक तरीका है।
Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!