- 1 1. परिचय: GROUP BY का अवलोकन
- 2 2. GROUP BY का मूल उपयोग
- 3 3. GROUP BY को एकत्रीकरण फंक्शनों के साथ संयोजित करना
- 4 4. HAVING क्लॉज के साथ फ़िल्टरिंग
- 5 5. ORDER BY के साथ GROUP BY का उपयोग
- 6 6. उन्नत GROUP BY: WITH ROLLUP
- 7 7. GROUP BY और DISTINCT के बीच अंतर
- 8 8. MySQL में GROUP BY प्रदर्शन को अनुकूलित करना
- 9 9. सारांश: GROUP BY का प्रभावी उपयोग
1. परिचय: GROUP BY का अवलोकन
डेटाबेस में बड़े डेटासेट को संभालते समय, डेटा को कुशलतापूर्वक एकत्रित और व्यवस्थित करने के लिए एक शक्तिशाली उपकरण GROUP BY क्लॉज है। GROUP BY एक विशिष्ट कॉलम के आधार पर डेटा को समूहित करता है और प्रत्येक समूह के लिए एकत्रीकरण करते समय इसका उपयोग किया जाता है। उदाहरण के लिए, यदि आप प्रत्येक उत्पाद श्रेणी के लिए कुल बिक्री की गणना करना चाहते हैं, तो यह क्लॉज वांछित डेटा प्राप्त करना सरल बनाता है।
GROUP BY क्लॉज का उपयोग करके, आप डेटा को आसानी से पढ़ने योग्य प्रारूप में व्यवस्थित कर सकते हैं और गहन विश्लेषण के लिए एकत्रीकरण फंक्शनों (SUM, COUNT, AVG, आदि) लागू कर सकते हैं।
2. GROUP BY का मूल उपयोग
GROUP BY क्लॉज निर्दिष्ट कॉलम द्वारा डेटा को समूहित करता है और प्रत्येक समूह के लिए एकत्रीकरण करता है। यह श्रेणियों या शर्तों के आधार पर सारांश और सांख्यिकी उत्पन्न करना आसान बनाता है।
मूल सिंटैक्स
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name;
उदाहरण
उत्पाद श्रेणी के अनुसार कुल बिक्री की गणना करने के लिए, आप क्वेरी को निम्नलिखित रूप में लिख सकते हैं:
SELECT product_category, SUM(sales_amount)
FROM sales
GROUP BY product_category;
यह क्वेरी प्रत्येक उत्पाद श्रेणी के लिए कुल बिक्री की गणना करती है।
उदाहरण परिणाम
उत्पाद_श्रेणी | SUM(sales_amount) |
|---|---|
इलेक्ट्रॉनिक्स | 100,000 |
भोजन | 50,000 |
कपड़े | 75,000 |

3. GROUP BY को एकत्रीकरण फंक्शनों के साथ संयोजित करना
GROUP BY को एकत्रीकरण फंक्शनों के साथ संयोजित करके, आप डेटा को समूहित कर सकते हैं और प्रत्येक समूह के लिए सांख्यिकी की गणना कर सकते हैं। MySQL में सामान्यतः उपयोग किए जाने वाले एकत्रीकरण फंक्शन निम्नलिखित हैं:
- SUM() : संख्यात्मक डेटा का योग गणना करता है।
- COUNT() : पंक्तियों की संख्या गिनता है।
- AVG() : संख्यात्मक डेटा का औसत गणना करता है।
- MAX() : अधिकतम मान प्राप्त करता है।
- MIN() : न्यूनतम मान प्राप्त करता है।
नमूना क्वेरी
उत्पाद श्रेणी के अनुसार कुल बिक्री और बिक्री की संख्या दोनों प्राप्त करने के लिए:
SELECT product_category, SUM(sales_amount), COUNT(*)
FROM sales
GROUP BY product_category;
यह क्वेरी प्रत्येक product_category के लिए कुल बिक्री और बिक्री की संख्या दोनों प्राप्त करती है।
4. HAVING क्लॉज के साथ फ़िल्टरिंग
HAVING क्लॉज GROUP BY के साथ बनाए गए समूहित डेटा पर शर्तें लागू करता है। WHERE क्लॉज के विपरीत, जो एकत्रीकरण से पहले पंक्तियों को फ़िल्टर करता है, HAVING एकत्रीकरण फंक्शन के परिणामों के आधार पर समूहों को फ़िल्टर करता है।
नमूना क्वेरी
उदाहरण के लिए, कुल बिक्री 1000 से अधिक वाली श्रेणियों को निकालने के लिए:
SELECT product_category, SUM(sales_amount)
FROM sales
GROUP BY product_category
HAVING SUM(sales_amount) > 1000;
यह क्वेरी 1000 से अधिक बिक्री कुल वाली उत्पाद श्रेणियां ही लौटाती है।

5. ORDER BY के साथ GROUP BY का उपयोग
GROUP BY के साथ डेटा को समूहित करने के बाद, आप ORDER BY क्लॉज का उपयोग करके परिणामों को क्रमबद्ध कर सकते हैं। ORDER BY निर्दिष्ट कॉलम मानों के आधार पर परिणामों को आरोही (ASC) या अवरोही (DESC) क्रम में क्रमबद्ध करता है।
नमूना क्वेरी
उत्पाद श्रेणियों को कुल बिक्री के आधार पर अवरोही क्रम में क्रमबद्ध करने के लिए:
SELECT product_category, SUM(sales_amount)
FROM sales
GROUP BY product_category
ORDER BY SUM(sales_amount) DESC;
यह क्वेरी उत्पाद श्रेणियों को सबसे अधिक से सबसे कम बिक्री तक क्रमबद्ध करके प्रदर्शित करती है।
6. उन्नत GROUP BY: WITH ROLLUP
WITH ROLLUP समूह कुल के अलावा समग्र कुल दिखाने वाली एक सारांश पंक्ति जोड़ता है। यह रिपोर्ट और सारांशों के लिए विशेष रूप से उपयोगी है।
नमूना क्वेरी
शहर के अनुसार बिक्री कुल और समग्र कुल दोनों दिखाने के लिए:
SELECT city, SUM(sales_amount)
FROM sales
GROUP BY city WITH ROLLUP;
यह क्वेरी प्रत्येक शहर के लिए कुल बिक्री के साथ-साथ समग्र कुल प्रदर्शित करती है।

7. GROUP BY और DISTINCT के बीच अंतर
DISTINCT और GROUP BY दोनों डेटा को व्यवस्थित करने में मदद करते हैं, लेकिन वे अलग-अलग उद्देश्यों की पूर्ति करते हैं। DISTINCT डुप्लिकेट पंक्तियों को हटाता है, जबकि GROUP BY डेटा को समूहित करता है और एकत्रीकरण करता है।
नमूना क्वेरी तुलना
DISTINCT का उपयोग करके उत्पाद श्रेणियों की अद्वितीय सूची प्राप्त करने के लिए:
SELECT DISTINCT product_category
FROM sales;
GROUP BY का उपयोग करके उत्पाद श्रेणी प्रति बिक्री संख्या प्राप्त करने के लिए:
SELECT product_category, COUNT(*)
FROM sales
GROUP BY product_category;
DISTINCT केवल डुप्लिकेट्स को हटाता है, जबकि GROUP BY एग्रीगेशन करता है।
8. MySQL में GROUP BY प्रदर्शन को अनुकूलित करना
बड़े डेटासेट्स के साथ काम करते समय, GROUP BY प्रदर्शन को अनुकूलित करना महत्वपूर्ण है। उचित कॉन्फ़िगरेशन और क्वेरी ट्यूनिंग दक्षता को काफी सुधार सकती है।
1. इंडेक्स का उपयोग करना
GROUP BY में उपयोग किए गए कॉलम्स पर इंडेक्स जोड़ने से खोज और ग्रुपिंग की गति सुधरती है।
CREATE INDEX idx_category ON sales(product_category);
उचित इंडेक्सिंग प्रदर्शन को काफी बढ़ा सकती है।
2. मेमोरी सेटिंग्स को समायोजित करना
बड़े डेटासेट्स को संभालते समय sort_buffer_size और tmp_table_size जैसी मेमोरी सेटिंग्स को अनुकूलित करना प्रदर्शन सुधारता है।
SET GLOBAL sort_buffer_size = 2M;
SET GLOBAL tmp_table_size = 64M;
मेमोरी बढ़ाने से डिस्क राइट्स कम होते हैं और क्वेरी एक्जीक्यूशन टाइम कम होता है।
3. क्वेरीज़ को सरल बनाना
जटिल क्वेरीज़ प्रदर्शन को धीमा करती हैं। अत्यधिक JOINs और सबक्वेरीज़ से बचें। अनावश्यक कॉलम्स और कंडीशन्स को हटाकर गति सुधारें।
4. संस्करण-विशिष्ट फीचर्स
MySQL 8.0 और उसके बाद में, सॉर्ट-बेस्ड ग्रुपिंग के अलावा हैश-बेस्ड ग्रुपिंग उपलब्ध है। बड़े डेटासेट्स के लिए हैश-बेस्ड ग्रुपिंग तेज़ है।
SET optimizer_switch = 'hash_join=on';
5. क्वेरी कैश का उपयोग करना
MySQL 5.7 और उसके पहले में, क्वेरी कैश को सक्षम करने से दोहराई गई क्वेरीज़ के लिए प्रदर्शन सुधरता है।
SET GLOBAL query_cache_size = 16M;
SET GLOBAL query_cache_type = 1;
6. पार्टिशनिंग पर विचार करना
MySQL का पार्टिशनिंग फीचर बड़े डेटाबेस को छोटे सेगमेंट्स में विभाजित करता है, जिससे क्वेरी एक्जीक्यूशन तेज़ होता है।
ALTER TABLE sales PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2021),
PARTITION p1 VALUES LESS THAN (2022),
PARTITION p2 VALUES LESS THAN (2023)
);
9. सारांश: GROUP BY का प्रभावी उपयोग
GROUP BY क्लॉज डेटा को ग्रुपिंग और एग्रीगेट करने के लिए एक आवश्यक SQL टूल है। इस लेख में, आपने GROUP BY के बेसिक्स, HAVING और ORDER BY के साथ इसका उपयोग, और WITH ROLLUP जैसी एडवांस्ड फीचर्स सीखे। आपने इंडेक्स, मेमोरी सेटिंग्स, और MySQL 8.0 में हैश-बेस्ड ग्रुपिंग जैसी संस्करण-विशिष्ट फीचर्स का उपयोग करके प्रदर्शन अनुकूलन भी एक्सप्लोर किया।
इसके अलावा, हमने बड़े डेटासेट्स को अधिक कुशलता से संभालने के लिए क्वेरी कैशिंग और पार्टिशनिंग जैसी एडवांस्ड MySQL फीचर्स को कवर किया। इन तकनीकों को उचित रूप से लागू करके, आप अपने प्रोजेक्ट्स में डेटा एनालिसिस और रिपोर्टिंग प्रदर्शन सुधार सकते हैं।


