SQL Academy · पाठ

GROUPING SETS की व्याख्या

ठीक वही ग्रुपिंग चुनें जो आप चाहते हैं।

पाठ 4, कुल 4 में से13 चरण

GROUPING SETS की व्याख्या, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

GROUPING SETS क्या हैं

जब आप GROUP BY क्लॉज़ लिखते हैं, तब आप समूह बनाने के लिए कॉलमों का एक समुच्चय निर्धारित करते हैं। लेकिन कभी-कभी आपको एक ही क्वेरी में कई अलग-अलग समूहीकरण चाहिए होते हैं—क्वेरी को कई बार चलाए बिना और UNION ALL का उपयोग किए बिना।

GROUPING SETS आपको यह स्पष्ट रूप से बताने देता है कि आपको कौन-कौन से समूहीकरण चाहिए, और यह सब डेटा पर एक ही बार में चलता है। सूची का प्रत्येक समुच्चय परिणाम में अपनी एकत्रित पंक्तियाँ बनाता है।

नमूना तालिका: बिक्री

इस पूरे पाठ में हम बिक्री तालिका का उपयोग करेंगे। इसमें क्षेत्र, उत्पाद श्रेणी और राशि के अनुसार लेन-देन दर्ज हैं।

तालिका बनाने और उसमें डेटा भरने के लिए कोड चलाएँ, ताकि आप हर उदाहरण के साथ आगे बढ़ सकें।

CREATE TABLE sales (
  region   TEXT,
  category TEXT,
  amount   NUMERIC
);

INSERT INTO sales VALUES
  ('East',  'Electronics', 500),
  ('East',  'Clothing',    200),
  ('West',  'Electronics', 300),
  ('West',  'Clothing',    400),
  ('North', 'Electronics', 150),
  ('North', 'Clothing',    250);

पुराना तरीका: UNION ALL

GROUPING SETS उपलब्ध होने से पहले, कई स्तरों पर कुल प्राप्त करने के लिए अलग-अलग क्वेरियाँ लिखकर उन्हें UNION ALL के साथ जोड़ना पड़ता था। यह दोहरावपूर्ण, पढ़ने में कठिन है और तालिका को कई बार स्कैन करता है।

नीचे दिया गया उदाहरण क्षेत्र के अनुसार कुल AND श्रेणी के अनुसार कुल लौटाता है—तीन अलग-अलग SELECT कथनों का उपयोग करके।

SELECT region, NULL AS category, SUM(amount) AS total
FROM sales
GROUP BY region

UNION ALL

SELECT NULL, category, SUM(amount)
FROM sales
GROUP BY category

UNION ALL

SELECT NULL, NULL, SUM(amount)
FROM sales;

GROUPING SETS का सिंटैक्स

GROUPING SETS क्लॉज़ को सामान्य GROUP BY के भीतर (या उसके स्थान पर) रखा जाता है। आप प्रत्येक वांछित समूहीकरण को कोष्ठक में लिखी कॉलम-सूची के रूप में सूचीबद्ध करते हैं। एक खाली समुच्चय () का अर्थ कुल योग है—अर्थात बिल्कुल कोई समूहीकरण नहीं।

यह एकल क्वेरी ऊपर दिए गए तीन-भाग वाले UNION ALL जैसा ही काम करती है, लेकिन अधिक संक्षिप्त रूप में और तालिका को केवल एक बार स्कैन करके।

SELECT region, category, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS (
  (region),
  (category),
  ()
);

परिणाम को समझना

प्रत्येक पंक्ति ठीक एक समूहीकरण समुच्चय से संबंधित होती है। जब कोई कॉलम सक्रिय समूहीकरण समुच्चय का हिस्सा नहीं होता, तो उसका मान NULL होता है।

  • region = 'East' और category = NULL वाली पंक्ति (region) समुच्चय से संबंधित है।
  • region = NULL और category = 'Electronics' वाली पंक्ति (category) समुच्चय से संबंधित है।
  • जिस पंक्ति में दोनों NULL हों, वह () समुच्चय से प्राप्त कुल योग है।

ये NULL संरचनात्मक हैं—इनका अर्थ उस आयाम के लिए 'सभी मान' है, न कि डेटा अनुपलब्ध है।

बहु-कॉलम समूहीकरण सेट

प्रत्येक समूहीकरण समुच्चय में एक से अधिक कॉलम हो सकते हैं। (region, category) समुच्चय दोनों कॉलमों के साथ मिलकर समूह बनाता है, ठीक वैसे ही जैसे साधारण GROUP BY region, category।

इसे अलग-अलग समुच्चयों और कुल योग के साथ मिलाने पर एक ही क्वेरी में चार-स्तरीय सारांश प्राप्त होता है।

SELECT region, category, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS (
  (region, category),
  (region),
  (category),
  ()
);

GROUPING() फ़ंक्शन

क्योंकि NULL का अर्थ या तो 'इस कॉलम का समूहीकरण नहीं किया गया' हो सकता है या वास्तविक रूप से अनुपलब्ध डेटा, इसलिए SQL उन्हें अलग-अलग पहचानने के लिए GROUPING() फ़ंक्शन प्रदान करता है।

GROUPING(col) उस समय 1 लौटाता है जब कॉलम को वर्तमान समूहीकरण समुच्चय से हटा दिया गया हो (अर्थात उसका NULL संरचनात्मक हो), और उस समय 0 लौटाता है जब कॉलम समूहीकरण का हिस्सा हो (या उसमें वास्तविक NULL मान हो)।

SELECT
  region,
  category,
  SUM(amount)      AS total,
  GROUPING(region) AS is_region_total,
  GROUPING(category) AS is_category_total
FROM sales
GROUP BY GROUPING SETS (
  (region),
  (category),
  ()
);

NULL लेबल बदलना

रिपोर्ट को पढ़ने में आसान बनाने के लिए संरचनात्मक NULL मानों को किसी वर्णनात्मक लेबल से बदलना एक सामान्य तरीका है। केवल रोलअप पंक्तियों के लिए लेबल बदलने हेतु CASE WHEN GROUPING(...) = 1 THEN 'सभी ...' ELSE col END का उपयोग करें।

SELECT
  CASE WHEN GROUPING(region)   = 1 THEN 'All Regions'    ELSE region   END AS region,
  CASE WHEN GROUPING(category) = 1 THEN 'All Categories' ELSE category END AS category,
  SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS (
  (region),
  (category),
  ()
);

GROUPING SETS बनाम ROLLUP

ROLLUP(a, b) एक संक्षिप्त रूप है, जो समूहीकरण सेट (a, b), (a), () में विस्तृत होता है—यह हमेशा किसी पदानुक्रम के अनुसार उप-योग और कुल योग जोड़ता है।

GROUPING SETS आपको पूरा नियंत्रण देता है: आप ठीक वही संयोजन चुनते हैं जो परिणाम में दिखाई दें। यदि आपको पूरा पदानुक्रम नहीं चाहिए, तो आप कुछ स्तरों को छोड़ सकते हैं। नीचे दी गई दोनों क्वेरियाँ एक जैसा परिणाम देती हैं।

-- Using ROLLUP
SELECT region, category, SUM(amount) AS total
FROM sales
GROUP BY ROLLUP(region, category);

-- Equivalent explicit GROUPING SETS
SELECT region, category, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS (
  (region, category),
  (region),
  ()
);

GROUPING SETS बनाम CUBE

CUBE(a, b) सूचीबद्ध कॉलमों के हर संभव संयोजन को बनाता है: (a, b), (a), (b), ()। यह विभिन्न आयामों के बीच विश्लेषण के लिए उपयोगी है, लेकिन बहुत-सी पंक्तियाँ बनाता है।

GROUPING SETS आपको केवल उन्हीं संयोजनों को चुनने देता है जिनकी आपको आवश्यकता है, जिससे परिणाम केंद्रित और क्वेरी तेज़ रहती है।

-- CUBE produces 4 grouping sets for 2 columns
SELECT region, category, SUM(amount) AS total
FROM sales
GROUP BY CUBE(region, category);

-- GROUPING SETS: omit the (category)-only set if not needed
SELECT region, category, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS (
  (region, category),
  (region),
  ()
);

व्यावहारिक उपयोग: बिक्री डैशबोर्ड

वास्तविक डैशबोर्ड में अक्सर पंक्ति-स्तरीय विवरण, विभाग के उप-योग और कुल योग—सभी एक ही परिणाम-समुच्चय में चाहिए होते हैं। GROUPING SETS अनुप्रयोग-पक्ष के एकत्रीकरण या कई बार अनुरोध भेजने की आवश्यकता के बिना यह काम आसान बना देता है।

यह क्वेरी क्षेत्र और श्रेणी के अनुसार विवरण पंक्तियाँ, केवल क्षेत्र के उप-योग और एकल कुल योग पंक्ति लौटाती है—और उन्हें इस तरह क्रमबद्ध करती है कि कुल योग सबसे अंत में दिखाई दे।

SELECT
  COALESCE(region,   'TOTAL')      AS region,
  COALESCE(category, 'ALL')        AS category,
  SUM(amount)                      AS total
FROM sales
GROUP BY GROUPING SETS (
  (region, category),
  (region),
  ()
)
ORDER BY
  GROUPING(region),
  region NULLS LAST,
  GROUPING(category),
  category NULLS LAST;

त्वरित जाँच

GROUPING SETS के बारे में अपनी समझ जाँचें।

पाठ का पुनरावलोकन

यहाँ आपने GROUPING SETS के बारे में सीखा:

  • GROUPING SETS आपको एक ही क्वेरी में कई समूहीकरण संयोजन निर्धारित करने देता है और दोहराए जाने वाले UNION ALL तरीकों का स्थान लेता है।
  • प्रत्येक समुच्चय को GROUP BY GROUPING SETS (...) के भीतर कोष्ठक में लिखी कॉलम-सूची के रूप में सूचीबद्ध किया जाता है। खाली समुच्चय () कुल योग बनाता है।
  • सक्रिय समुच्चय में शामिल न होने वाले कॉलम उस पंक्ति में NULL के रूप में दिखाई देते हैं—इन संरचनात्मक NULL मानों का पता लगाने के लिए GROUPING(col) का उपयोग करें।
  • ROLLUP और CUBE सामान्य तरीकों के सुविधाजनक संक्षिप्त रूप हैं, लेकिन कौन-कौन से समूहीकरण शामिल किए जाएँ, इस पर GROUPING SETS आपको पूरा और सटीक नियंत्रण देता है।
  • रिपोर्ट में NULL मानों को पढ़ने योग्य लेबल से बदलने के लिए इसे COALESCE या CASE WHEN GROUPING(...) के साथ मिलाएँ।
शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
46
पाठ
183

अक्सर पूछे जाने वाले प्रश्न

क्या “GROUPING SETS की व्याख्या” पाठ निःशुल्क है?

हाँ—“GROUPING SETS की व्याख्या” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“GROUPING SETS की व्याख्या” में मैं क्या सीखूँगा?

ठीक वही ग्रुपिंग चुनें जो आप चाहते हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“GROUPING SETS की व्याख्या” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. एकल GROUP BY से आगे
  2. उप-योगों के लिए ROLLUP
  3. सभी संयोजनों के लिए CUBE
  4. GROUPING SETS की व्याख्या
← SQL Academy पर वापस जाएँ