- 1 १. परिचय: GROUP BY को अवलोकन
- 2 २. GROUP BY को आधारभूत प्रयोग
- 3 ३. GROUP BY लाई एकत्रीकरण फङ्क्शनहरूसँग जोड्ने
- 4 ४. HAVING क्लजसँग फिल्टरिङ
- 5 ५. ORDER BY सँग GROUP BY प्रयोग गर्ने
- 6 ६. उन्नत GROUP BY: WITH ROLLUP
- 7 ७. GROUP BY र DISTINCT बीचको भिन्नता
- 8 8. MySQL मा GROUP BY प्रदर्शन अनुकूलन
- 9 9. सारांश: GROUP को प्रभावकारी प्रयोग
१. परिचय: GROUP BY को अवलोकन
डेटाबेसमा ठूला डाटासेटहरू ह्यान्डल गर्दा, डाटा प्रभावकारी रूपमा एकत्रित र व्यवस्थित गर्नको लागि एक शक्तिशाली उपकरण GROUP BY क्लज हो। GROUP BY ले विशिष्ट कलममा आधारित डाटा समूहबद्ध गर्दछ र प्रत्येक समूहको लागि एकत्रीकरण गर्दा प्रयोग गरिन्छ। उदाहरणको लागि, यदि तपाईंले प्रत्येक उत्पादन वर्गको लागि कुल बिक्री गणना गर्न चाहनुहुन्छ भने, यो क्लजले वांछित डाटा प्राप्त गर्न सजिलो बनाउँछ।
GROUP BY क्लज प्रयोग गरेर, तपाईंले डाटालाई सजिलो पढ्न सकिने ढाँचामा व्यवस्थित गर्न सक्नुहुन्छ र गहिरो विश्लेषणको लागि एकत्रीकरण फङ्क्शनहरू (SUM, COUNT, AVG, आदि) लागू गर्न सक्नुहुन्छ।
२. 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 |

३. 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 को कुल बिक्री र बिक्री संख्याहरू दुवै प्राप्त गर्दछ।
४. HAVING क्लजसँग फिल्टरिङ
HAVING क्लजले GROUP BY सँग सिर्जना गरिएका समूहित डाटामा अवस्थाहरू लागू गर्दछ। WHERE क्लज जसले एकत्रीकरण अघि पङ्क्तिहरू फिल्टर गर्दछ भन्दा फरक, HAVING ले एकत्रीकरण फङ्क्शन परिणामहरूमा आधारित समूहहरू फिल्टर गर्दछ।
नमूना क्वेरी
उदाहरणको लागि, कुल बिक्री १००० भन्दा बढी भएका वर्गहरू मात्र निकाल्नको लागि:
SELECT product_category, SUM(sales_amount)
FROM sales
GROUP BY product_category
HAVING SUM(sales_amount) > 1000;
यो क्वेरीले १००० भन्दा माथि बिक्री कुल भएका उत्पादन वर्गहरू मात्र फर्काउँछ।

५. 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;
यो क्वेरीले उत्पादन वर्गहरूलाई सबैभन्दा उच्च देखि सबैभन्दा कम बिक्री सम्म क्रमबद्ध गरेर प्रदर्शित गर्दछ।
६. उन्नत GROUP BY: WITH ROLLUP
WITH ROLLUP ले समूह कुलहरूको अतिरिक्त समग्र कुलहरू देखाउने सारांश पङ्क्ति थप्दछ। यो रिपोर्टहरू र सारांशहरूको लागि विशेष रूपमा उपयोगी छ।
नमूना क्वेरी
शहर अनुसार बिक्री कुलहरू र समग्र कुल दुवै देखाउनको लागि:
SELECT city, SUM(sales_amount)
FROM sales
GROUP BY city WITH ROLLUP;
यो क्वेरीले प्रत्येक शहरको कुल बिक्री र समग्र कुल दुवै प्रदर्शित गर्दछ।

७. 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. क्वेरीहरू सरल बनाउँदै
जटिल क्वेरीहरूले प्रदर्शनलाई सुस्त बनाउँछन्। अत्यधिक JOIN र सबकहरूबाट बच्नुहोस्। अनावश्यक स्तम्भ र सर्तहरू हटाएर गति सुधार्नुहोस्।
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 को प्रभावकारी प्रयोग
GROUP BY क्लज डेटा समूहबद्ध र एग्रिगेट गर्नको लागि आवश्यक SQL उपकरण हो। यस लेखमा, तपाईंले GROUP BY को आधारभूत कुरा, यसलाई HAVING र ORDER BY सँग कसरी प्रयोग गर्ने, र WITH ROLLUP जस्ता उन्नत सुविधाहरू सिक्नुभयो। तपाईंले इन्डेक्सहरू, मेमोरी सेटिङहरू, र MySQL 8.0 मा ह्यास-आधारित समूहबद्धता जस्ता संस्करण-विशिष्ट सुविधाहरू प्रयोग गरेर प्रदर्शन अनुकूलन पनि अन्वेषण गर्नुभयो।
थप रूपमा, हामीले ठूलो डेटा सेटहरूलाई अझ प्रभावकारी रूपमा ह्यान्डल गर्न क्वेरी क्यासिङ र पार्टिशनिङ जस्ता उन्नत MySQL सुविधाहरूलाई समेट्यौं। यी प्रविधिहरूलाई उपयुक्त रूपमा लागू गरेर, तपाईंले आफ्नो परियोजनामा डेटा विश्लेषण र रिपोर्टिङ प्रदर्शन सुधार्न सक्नुहुन्छ।


