मुख्य सामग्री पर जाएं

SQL में CASE स्टेटमेंट समझाया गया

श्रेणीगत कॉलम बनाने के लिए SQL के CASE स्टेटमेंट का उपयोग समझें।
अपडेट किया गया 25 सित॰ 2026  · 7 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

यदि आपने डेटाबेस के साथ काम किया है, तो आपने संभवतः देखा होगा कि डेटा शायद ही कभी परफेक्ट होता है और सार्थक इनसाइट्स निकालने के लिए उसे अक्सर रूपांतरित करने की आवश्यकता पड़ती है।

इसी आवश्यकता को पूरा करने के लिए SQL एक शक्तिशाली कॉन्स्ट्रक्ट देता है, जिसे CASE स्टेटमेंट कहा जाता है, जो मौजूदा कॉलमों पर लागू शर्तों के आधार पर नए कॉलम बनाने या डेटा को रूपांतरित करने की सुविधा देता है।

इस लेख में, हम समझाएँगे कि CASE स्टेटमेंट क्या है, यह क्यों आवश्यक है, और इसके विभिन्न उपयोग मामलों का अन्वेषण करेंगे ताकि आप इसकी क्षमता का लाभ उठा सकें। आइए शुरू करें!

CASE स्टेटमेंट क्या है?

SQL में Case स्टेटमेंट एक कंडीशनल एक्सप्रेशन है जो आपकी क्वेरी में निर्णय-निर्माण लॉजिक जोड़ता है। यह Python के if-elif-else स्टेटमेंट जैसा काम करता है, जिससे आप एकाधिक शर्तों का मूल्यांकन कर सकते हैं और उन शर्तों के आधार पर विशिष्ट परिणाम लौटा सकते हैं। 

सामान्य सिंटैक्स इस प्रकार है:

CASE
	WHEN boolean_condition1 THEN result1
	WHEN boolean_condition2 THEN result2
	ELSE result3
END

यह इस तरह काम करता है:

  • CASE कीवर्ड एक्सप्रेशन की शुरुआत को दर्शाता है, जबकि END इसका समापन करता है—शर्तों वाले स्टेटमेंट को एक फ्रेम की तरह समेटते हुए।

  • हर WHEN क्लॉज़ एक शर्त का मूल्यांकन करता है। यदि शर्त सत्य है, तो संबंधित THEN क्लॉज़ निर्दिष्ट परिणाम लौटाता है।

  • यदि WHEN क्लॉज़ में दी गई कोई भी शर्त पूरी नहीं होती, तो ELSE क्लॉज़ एक डिफ़ॉल्ट परिणाम देता है।

CASE स्टेटमेंट महत्वपूर्ण क्यों है?

CASE WHEN स्टेटमेंट SQL क्वेरियों में कई प्रमुख लाभ प्रदान करता है:

  • डेटा रूपांतरण: मौजूदा कॉलमों के मानों के आधार पर नए कॉलम बनाने में सक्षम बनाता है।
  • सशर्त समष्टिकरण: शर्तों के आधार पर विशिष्ट डेटा उपसमूहों के लिए समष्टिगत मान (जैसे, योग, गणना, अधिकतम) निकालने देता है।
  • डेटा फ़िल्टरिंग: आप विशिष्ट मानदंडों के आधार पर पंक्तियों को शामिल या बाहर कर सकते हैं।
  • क्वेरी सरलीकरण और पठनीयता: यह लॉजिक को एक ही क्वेरी में समेकित करने में मदद करता है, जिससे कई क्वेरियों, अस्थायी तालिकाओं या जटिल जॉइनों की आवश्यकता घटती है।
  • प्रदर्शन अनुकूलन: SQL क्वेरियों की जटिलता को कम करके, CASE स्टेटमेंट प्रदर्शन को अनुकूलित करने और निष्पादन समय को घटाने में योगदान दे सकता है, खासकर जब यह अतिरिक्त गणनाओं और रूपांतरणों की आवश्यकता टाल देता है।

सिंपल CASE स्टेटमेंट

इस लेख में, हम cinema डेटाबेस की film तालिका का उपयोग करेंगे। मान लीजिए कि हम ROI (ग्रॉस से बजट का अनुपात) के मानों के आधार पर एक नया श्रेणीगत कॉलम बनाना चाहते हैं:

SELECT 
	title,
	gross,
	budget,
	gross / budget AS ROI,
CASE
	 WHEN gross / budget < 1 THEN 'low ROI'
	 WHEN gross / budget BETWEEN 1 AND 2 THEN 'medium ROI'
	 ELSE 'high ROI'
END as ROI_group
FROM cinema.films
WHERE budget > 0 AND gross > 0 AND release_year = 2015;

ग्रॉस और बजट दिए जाने पर, हमने ROI की गणना की है, जो एक लोकप्रिय प्रॉफिटेबिलिटी मीट्रिक है जो किसी निवेश से उत्पन्न आय को मापता है।

ROI फ़ील्ड के अतिरिक्त, हमने इसकी श्रेणीकरण भी प्राप्त की ताकि संप्रेषण बेहतर हो:

  • यदि फिल्मों का ROI 1 से कम है, तो मान “low ROI” है
  • ROI 1 और 2 के बीच वाली फिल्में “medium ROI” श्रेणी में आती हैं
  • “High ROI” वह लेबल है जो उन फिल्मों को दिया जाता है जिनका ROI 2 या उससे अधिक है।

हमने उन फिल्मों को भी फ़िल्टर किया है जिनका बजट या ग्रॉस शून्य या नकारात्मक है। साथ ही, हमने परिणामों को 2015 में रिलीज़ हुई फिल्मों तक सीमित किया है।

GROUP BY क्लॉज़ में CASE का उपयोग

पहले उदाहरण में, हमने एक नया फ़ील्ड बनाया, जिसे डेटा को समष्टिगत करने और अतिरिक्त इनसाइट्स प्राप्त करने के लिए लागू किया जा सकता है।

उदाहरण के लिए, हम प्रत्येक ROI समूह के लिए औसत ग्रॉस और औसत बजट की गणना कर सकते हैं:

SELECT 
CASE
	 WHEN gross / budget < 1 THEN 'low ROI'
	 WHEN gross / budget BETWEEN 1 AND 2 THEN 'medium ROI'
	 ELSE 'high ROI'
END AS ROI_group,
avg(gross) as avg_gross,
avg(budget) as avg_budget
FROM cinema.films
WHERE budget > 0 AND gross > 0 AND release_year = 2015
GROUP BY
CASE
	 WHEN gross / budget < 1 THEN 'low ROI'
	 WHEN gross / budget BETWEEN 1 AND 2 THEN 'medium ROI'
	 ELSE 'high ROI'
END
ORDER BY avg(gross) DESC
;

डेटा को समूहित करने के लिए, हमने बस CASE स्टेटमेंट को GROUP BY क्लॉज़ में रख दिया। अतिरिक्त इनसाइट्स के लिए, हमने पंक्तियों को औसत ग्रॉस के आधार पर घटते क्रम में क्रमबद्ध किया। इस तरह, हम देख पाते हैं कि सबसे अधिक औसत ग्रॉस high ROI को मिलता है और low ROI के लिए विपरीत।

WHERE क्लॉज़ में CASE का उपयोग

CASE स्टेटमेंट का एक और लाभ यह है कि यह विशिष्ट शर्तों के आधार पर पंक्तियों को फ़िल्टर करने में सक्षम बनाता है। उदाहरण के लिए, हम फिल्म की भाषा के आधार पर अलग-अलग ROI थ्रेशहोल्ड लागू कर सकते हैं। यह ज्ञात है कि अंग्रेज़ी फिल्मों का ROI लगातार अधिक होता है। इसलिए, उनके लिए थ्रेशहोल्ड उच्च होना चाहिए, जबकि हम मानते हैं कि अन्य भाषाओं में ROI कम होता है।

SELECT 
    title,
    gross,
    budget,
    language,
    gross / budget AS ROI
FROM cinema.films
WHERE 
    CASE 
        WHEN language = 'English' THEN gross / budget > 2 -- English films need ROI > 2
        WHEN language = 'French' THEN gross / budget > 1.5 -- French films need ROI > 1.5
        ELSE gross / budget > 1.3 -- Default for other languages
    END;

एग्रीगेशन की गणना

हम 2015 में रिलीज़ हुई high ROI बनाम low ROI वाली फिल्मों की संख्या की गणना करने में भी रुचि ले सकते हैं:

SELECT 
    SUM(CASE WHEN gross / budget > 2 THEN 1 ELSE 0 END) AS high_roi_films,
    SUM(CASE WHEN gross / budget BETWEEN 1 AND 2 THEN 1 ELSE 0 END) AS medium_roi_films,
    SUM(CASE WHEN gross / budget < 1 THEN 1 ELSE 0 END) AS low_roi_films
FROM cinema.films
WHERE budget > 0 AND gross > 0 AND release_year = 2015;

SUM फ़ंक्शन के अंदर, मानो हम एक नया फ़ील्ड बनाते हैं जिसका मान 1 होता है जब ROI उस थ्रेशहोल्ड तक पहुँचता है, वरना 0। इस नई बाइनरी वैरिएबल का योग लेने पर हमें उन फिल्मों की संख्या मिलती है जो उस मापदंड को पूरा करती हैं।

आउटपुट से, हम देख सकते हैं कि अधिकांश फिल्मों का ROI 1 से कम है, जबकि कुछ ही फिल्में अत्यधिक लाभप्रद हैं।

नेस्टेड Case स्टेटमेंट

सबसे उन्नत उपयोग मामलों में से एक नेस्टेड केस स्टेटमेंट है, यानी एक CASE के अंदर दूसरा CASE। यह तब बहुत उपयोगी होता है जब आपको डेटा को उपसमूहों में बाँटना हो और प्रत्येक उपसमूह के लिए अलग लॉजिक लागू करना हो। 

पहले उदाहरण की तरह, हम एक नया कॉलम बनाना चाहते हैं, जिस पर ROI के मानों का प्रभाव होना चाहिए। जैसा कि हमने पहले कहा, अंग्रेज़ी-भाषा की फिल्मों का ROI अन्य भाषाओं की फिल्मों की तुलना में वैश्विक स्तर पर अधिक होता है। 

इसी कारण, ROI और भाषा—दोनों को ध्यान में रखते हुए—फिल्मों को ROI समूहों में वर्गीकृत करना बेहतर होगा

SELECT 
    title,
    language,
    gross / budget AS ROI,
    CASE
        WHEN language = 'English' THEN 
            CASE 
                WHEN gross / budget < 2 THEN 'low ROI'
                WHEN gross / budget BETWEEN 2 AND 3 THEN 'medium ROI'
                ELSE 'high ROI'
            END
        ELSE 
            CASE
                WHEN gross / budget < 1 THEN 'low ROI'
                WHEN gross / budget BETWEEN 1 AND 2 THEN 'medium ROI'
                ELSE 'high ROI'
            END
    END AS ROI_group
FROM cinema.films
WHERE budget > 0 AND gross > 0 and release_year = 2006;

क्वेरी में, बाहरी CASE स्टेटमेंट यह जाँचने के लिए उपयोग किया गया है कि भाषा अंग्रेज़ी है या नहीं। भाषा के अनुसार, अंदर वाला CASE ROI का मूल्यांकन करता है: अंग्रेज़ी फिल्मों के लिए थ्रेशहोल्ड अधिक हैं और गैर-अंग्रेज़ी फिल्मों के लिए कम। यह बहु-स्तरीय शर्त low, medium और high-ROI फिल्मों के विभाजन में सुधार करने देती है।

निष्कर्ष

CASE स्टेटमेंट आपके डेटा से सार्थक इनसाइट्स निकालने के लिए एक अपरिहार्य SQL कॉन्स्ट्रक्ट है। सिद्धांत को व्यावहारिक उदाहरणों के साथ पिरोया गया है ताकि आप इस शक्तिशाली कंडीशनल एक्सप्रेशन को गहराई से समझ सकें। यदि आप और गहराई में जाना चाहते हैं, तो data manipulation in SQL course पर नज़र डालें। इसमें CASE स्टेटमेंट के साथ-साथ SQL के अन्य प्रमुख पहलू, जैसे सबक्वेरियाँ और विंडो फ़ंक्शंस भी शामिल हैं। अंत में, SQL Fundamentals भी देखें ताकि SQL में महारत हासिल करने में मदद करने वाले पाठ्यक्रमों का अवलोकन मिल सके।


Eugenia Anello's photo
Author
Eugenia Anello
LinkedIn

डेटा वैज्ञानिक - CRIF

विषय
SQL

टॉप SQL कोर्सेज़

लर्निंग पाथ

SQL मूलभूत बातें

26 घंटा
व्यवसाय के लिए आवश्यक SQL मूलभूत बातें सीखें, SQL क्वेरी लिखना सीखें, और इस शक्तिशाली भाषा का उपयोग करके अपने डेटा का विश्लेषण शुरू करें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

कोर्स

SQL में Data Manipulation

4 घंटा
337.9K
जटिल SQL क्वेरियों में महारत हासिल करें, डेटा विज्ञान के विविध प्रश्नों के उत्तर दें और PostgreSQL में विश्लेषण के लिए मजबूत डेटा सेट तैयार करें।
और देखेंRight Arrow