सशर्त एकत्रीकरण के साथ पिवट करना
पंक्तियों को स्तंभों में बदलने वाला पोर्टेबल CASE-अंदर-SUM पैटर्न
सशर्त एकत्रीकरण के साथ पिवट करना, CoddyKit पर कोडिंग साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह कोडिंग साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
साक्षात्कार की रूपरेखा
रिपोर्टिंग साक्षात्कार के सबसे सामान्य कार्यों में से एक है: पंक्तियों को स्तंभों में बदलना। आपके पास sales(region, quarter, amount) जैसी लंबी तालिका है और साक्षात्कारकर्ता प्रत्येक तिमाही के लिए एक स्तंभ वाली चौड़ी रिपोर्ट चाहते हैं।
वे जिस पोर्टेबल, डेटाबेस-भाषा से स्वतंत्र उत्तर को सुनना चाहते हैं, वह है सशर्त एकत्रीकरण: CASE अभिव्यक्ति को SUM जैसे एकत्रीकरण के भीतर रखना। इसे सीख लेने पर आप किसी भी डेटाबेस में पिवट कर सकते हैं, यहाँ तक कि उन डेटाबेस में भी जिनमें PIVOT कीवर्ड नहीं है।
लंबा बनाम चौड़ा रूप
पिवट करने से पहले इन रूपों के नाम जान लें। लंबा रूप प्रत्येक पंक्ति में एक तथ्य संग्रहीत करता है: प्रत्येक क्षेत्र-तिमाही जोड़ी अपनी अलग पंक्ति होती है। चौड़ा रूप किसी श्रेणी को स्तंभों में फैलाता है।
- लंबा: डेटा डालना आसान, अगल-बगल पढ़ना कठिन।
- चौड़ा: मानव-पठनीय रिपोर्ट के लिए शानदार।
पिवट लंबें रूप को चौड़े रूप में बदलता है। साक्षात्कारकर्ताओं को यह पसंद आता है, क्योंकि इससे पता चलता है कि आप केवल वाक्य-विन्यास नहीं, बल्कि एकत्रीकरण भी समझते हैं।
-- Long form (the input)
region | quarter | amount
-------+---------+-------
East | Q1 | 100
East | Q2 | 150
West | Q1 | 200
West | Q2 | 250मुख्य तरीका
युक्ति यह है: प्रत्येक आउटपुट स्तंभ के लिए ऐसा CASE लिखें, जो पंक्ति के उस स्तंभ से मेल खाने पर मान लौटाए और अन्यथा NULL लौटाए। इसे किसी एकत्रीकरण में लपेटें, ताकि समूह सिमटकर प्रत्येक कुंजी के लिए एक पंक्ति रह जाए।
इसे ऐसे पढ़ें: राशि का योग करें, लेकिन केवल Q1 वाली पंक्तियों के लिए। चूँकि SUM NULL को अनदेखा करता है, मेल न खाने वाली पंक्तियाँ कुछ भी नहीं जोड़तीं।
SELECT
region,
SUM(CASE WHEN quarter = 'Q1' THEN amount END) AS q1,
SUM(CASE WHEN quarter = 'Q2' THEN amount END) AS q2
FROM sales
GROUP BY region;SUM NULL को क्यों अनदेखा करता है
यह तरीका उस तथ्य के कारण काम करता है, जिसके बारे में साक्षात्कारकर्ता जाँच करेंगे: एकत्रीकरण फ़ंक्शन NULL मानों को छोड़ देते हैं। बिना ELSE वाला CASE तब NULL लौटाता है, जब कोई शाखा मेल नहीं खाती, इसलिए SUM(CASE WHEN ... THEN amount END) केवल आपके चुनी हुई पंक्तियों को जोड़ता है।
यदि आप इसके बजाय ELSE 0 लिखें, तो SUM के लिए यह भी काम करेगा (शून्य जोड़ने से कुछ नहीं बदलता), लेकिन इससे AVG, MIN और COUNT का व्यवहार बिगड़ जाएगा।
-- Both produce the same SUM result:
SUM(CASE WHEN quarter = 'Q1' THEN amount END)
SUM(CASE WHEN quarter = 'Q1' THEN amount ELSE 0 END)व्यावहारिक उदाहरण: त्रैमासिक रिपोर्ट
यहाँ नमूना डेटा पर चलने वाली पूरी क्वेरी है। प्रत्येक क्षेत्र एक पंक्ति बन जाता है और प्रत्येक तिमाही एक स्तंभ।
GROUP BY region ही चार इनपुट पंक्तियों को दो आउटपुट पंक्तियों में समेटता है। इसके बिना, आपको प्रत्येक इनपुट पंक्ति के लिए एक पंक्ति मिलती, जिनमें अधिकतर NULL होते।
SELECT
region,
SUM(CASE WHEN quarter = 'Q1' THEN amount END) AS q1,
SUM(CASE WHEN quarter = 'Q2' THEN amount END) AS q2
FROM sales
GROUP BY region;
-- Result:
-- region | q1 | q2
-- East | 100 | 150
-- West | 200 | 250सही समेकन फ़ंक्शन चुनना
आप जिस समेकन फ़ंक्शन में CASE लपेटते हैं, वह प्रश्न के अनुरूप होना चाहिए:
- जब प्रत्येक कक्ष में मानों का योग करना हो, तब
SUM। - जब प्रत्येक क्षेत्र/तिमाही युग्म में ठीक एक मान हो और आपको केवल उसे दिखाना हो, तब
MAXयाMIN। - जब प्रत्येक कक्ष में मेल खाती पंक्तियों की गिनती करनी हो, तब
COUNT।
साक्षात्कारकर्ता अक्सर COUNT वाला रूप पूछते हैं: प्रति स्थिति, प्रति माह कितने ऑर्डर हैं?
SELECT
month,
COUNT(CASE WHEN status = 'shipped' THEN 1 END) AS shipped,
COUNT(CASE WHEN status = 'cancelled' THEN 1 END) AS cancelled
FROM orders
GROUP BY month;एक-मान वाले कक्षों के लिए MAX
जब प्रत्येक कुंजी/श्रेणी युग्म में एक ही मान हो (अर्थात् कुल योग नहीं, बल्कि वास्तविक क्रॉस-टैब हो), तब MAX या MIN का उपयोग करें। दोनों एकमात्र गैर-NULL मान लौटाते हैं और मेल न खाने वाली शाखाओं से आए NULL को अनदेखा करते हैं।
जब आप धनराशि का योग करने के बजाय विशेषताओं का रूप बदल रहे हों, तब यह सुरक्षित विकल्प है। उदाहरण के लिए, कुंजी/मान वाली सेटिंग्स तालिका को प्रति इकाई एक पंक्ति में बदलना।
-- Turn key/value rows into one wide row per user
SELECT
user_id,
MAX(CASE WHEN attr = 'city' THEN value END) AS city,
MAX(CASE WHEN attr = 'plan' THEN value END) AS plan
FROM user_attributes
GROUP BY user_id;NULL आउटपुट कक्ष संभालना
यदि किसी क्षेत्र में Q2 की बिक्री नहीं थी, तो उसका q2 कक्ष NULL आता है। साक्षात्कारकर्ता आपसे इसके बजाय 0 दिखाने को कह सकते हैं। पूरे समेकन को COALESCE में लपेटें।
COALESCE को CASE के अंदर नहीं, बल्कि समेकन के बाहर रखें, ताकि आप केवल तब मान बदलें जब पूरे समूह में कोई मेल खाती पंक्ति न हो।
SELECT
region,
COALESCE(SUM(CASE WHEN quarter = 'Q1' THEN amount END), 0) AS q1,
COALESCE(SUM(CASE WHEN quarter = 'Q2' THEN amount END), 0) AS q2
FROM sales
GROUP BY region;कुल योग का स्तंभ जोड़ना
एक सामान्य अगला प्रश्न होता है: सभी PIVOT किए गए स्तंभों का कुल जोड़ें। आपको स्तंभों को नाम से जोड़ने की आवश्यकता नहीं है। उसी समूह पर साधारण SUM(amount) पंक्ति का कुल देता है, क्योंकि वह CASE की छँटाई को पूरी तरह अनदेखा करता है।
इससे साक्षात्कारकर्ता को पता चलता है कि आप समझते हैं कि SELECT में प्रत्येक समेकन की गणना उसी समूह पर स्वतंत्र रूप से होती है।
SELECT
region,
SUM(CASE WHEN quarter = 'Q1' THEN amount END) AS q1,
SUM(CASE WHEN quarter = 'Q2' THEN amount END) AS q2,
SUM(amount) AS total
FROM sales
GROUP BY region;फ़िल्टर किए गए समेकन का आसान तरीका
PostgreSQL और SQL मानक FILTER (WHERE ...) का समर्थन करते हैं। यह सशर्त समेकन लिखने का अधिक साफ़ तरीका है। यह पढ़ने में बेहतर लगता है और CASE के दोहराव वाले ढाँचे से बचाता है।
अपनी जानकारी की व्यापकता दिखाने के लिए साक्षात्कार में इसका उल्लेख करें, लेकिन जानें कि MySQL और एसक्यूएल सर्वर इसका समर्थन नहीं करते। इसलिए CASE ही अलग-अलग प्रणालियों में चलने वाला उत्तर बना रहता है।
-- Postgres / standard SQL
SELECT
region,
SUM(amount) FILTER (WHERE quarter = 'Q1') AS q1,
SUM(amount) FILTER (WHERE quarter = 'Q2') AS q2
FROM sales
GROUP BY region;बड़ी सीमा
सशर्त समेकन में एक ऐसी अड़चन है जिस पर साक्षात्कारकर्ता ज़ोर देंगे: आपको प्रत्येक आउटपुट स्तंभ हाथ से लिखना होगा। यदि तिमाहियाँ या श्रेणियाँ पहले से ज्ञात नहीं हैं, तो यह स्थिर क्वेरी अपने-आप अनुकूलित नहीं हो सकती।
इस समस्या को गतिशील PIVOT कहा जाता है और इसके लिए बनाया गया SQL चाहिए। हालाँकि, श्रेणियों का निश्चित और ज्ञात समूह हो तो सशर्त समेकन साफ़-सुथरा और सभी प्रणालियों में चलने वाला बेहतर विकल्प है।
त्वरित जाँच
सशर्त समेकन के पैटर्न पर अपनी समझ जाँचें।
पुनरावलोकन
सशर्त समेकन ऐसा पोर्टेबल PIVOT है जिसे हर साक्षात्कारकर्ता स्वीकार करता है:
- प्रत्येक आउटपुट स्तंभ के लिए एक
CASE, जिसे किसी समेकन में लपेटा जाता है। - कुल योग के लिए
SUM, एकल-मान वाले कक्षों के लिएMAX/MIN, और गिनती के लिएCOUNT। - यह इसलिए काम करता है क्योंकि समेकन मेल न खाने वाली शाखाओं से आए
NULLको अनदेखा करते हैं। - खाली कक्षों को 0 में बदलने के लिए
COALESCEका उपयोग करें। - सीमा: स्तंभों को पहले से क्वेरी में लिखना पड़ता है, इसलिए अगला विषय गतिशील PIVOT है।
एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 90
- पाठ
- 360
अक्सर पूछे जाने वाले प्रश्न
क्या “सशर्त एकत्रीकरण के साथ पिवट करना” पाठ निःशुल्क है?
हाँ—“सशर्त एकत्रीकरण के साथ पिवट करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“सशर्त एकत्रीकरण के साथ पिवट करना” में मैं क्या सीखूँगा?
पंक्तियों को स्तंभों में बदलने वाला पोर्टेबल CASE-अंदर-SUM पैटर्न आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ कोडिंग साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर कोडिंग साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“सशर्त एकत्रीकरण के साथ पिवट करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस कोडिंग साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर कोडिंग साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- सशर्त एकत्रीकरण के साथ पिवट करना
- विक्रेता-विशिष्ट PIVOT और क्रॉसटैब सिंटैक्स
- स्तंभों को पंक्तियों में अनपिवट करना
- अज्ञात स्तंभों के साथ डायनेमिक पिवट