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

PostgreSQL में CASE स्टेटमेंट्स

इस ट्यूटोरियल में, आप PostgreSQL CASE कंडीशनल एक्सप्रेशन का उपयोग करके PostgreSQL में कंडीशनल क्वेरियाँ लिखना सीखेंगे।
अपडेट किया गया 25 सित॰ 2026  · 7 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

कंडीशनल एक्सप्रेशंस किसी भी प्रोग्रामिंग पैरेडाइम के सबसे बुनियादी तत्वों में से एक हैं। आम कंडीशनल एक्सप्रेशंस में if-else ब्लॉक्स और switch केसेज़ शामिल हैं। PostgreSQL में आप WHEN-THEN केस का उपयोग करके कंडीशनल एक्सप्रेशन बना सकते हैं, जो if-else ब्लॉक्स के काफी समान है। इस ट्यूटोरियल में, आप यह करना सीखेंगे।

कंडीशन क्वेरियाँ लिखना शुरू करने से पहले, यह महत्वपूर्ण है कि आप एक लोकल PostgreSQL डेटाबेस सेट अप करें। आप यह इस ट्यूटोरियल के पहले सेक्शन में करेंगे।

नोट: इस ट्यूटोरियल के साथ चलने के लिए आपको SQL और PostgreSQL की बुनियादी जानकारी होनी चाहिए। निम्न संसाधनों से आप बेसिक्स रिफ्रेश कर सकते हैं:

लोकल रूप से PostgreSQL डेटाबेस सेट अप करना

डेटाबेस सेट अप करने के लिए, आप इस लेख का अनुसरण कर सकते हैं। बैकअप को सफलतापूर्वक रिस्टोर करने के बाद, आपको डेटाबेस में ये टेबल्स दिखाई देंगी:

  • countries
  • route_table
  • station_table
  • train_table

हालांकि, यह ट्यूटोरियल केवल countries टेबल का उपयोग करता है। डेटाबेस बैकअप में दी गई टेबल्स को बेझिझक एक्सप्लोर करें। आप अपने स्वयं के डेटाबेस और टेबल्स भी बनाना चाह सकते हैं। यदि आपने डेटाबेस बैकअप रिस्टोर कर लिया है, तो अब आपके पास दुनिया भर के विभिन्न देशों के विवरणों से भरी एक टेबल होनी चाहिए। अब संक्षेप में countries टेबल का अन्वेषण करते हैं।

countries टेबल का संक्षिप्त अन्वेषण

डेटाबेस रिस्टोर करने के बाद, आप इस टेबल को pgAdmin इंटरफ़ेस में देख सकते हैं, जो PostgreSQL की डिफ़ॉल्ट इंस्टॉलेशन के साथ आता है। एक साधारण SELECT स्टेटमेंट चलाने पर आपको कॉलम्स, उनके डेटा-टाइप्स और टेबल में मौजूद पंक्तियों के बारे में पता चलता है -

database

टेबल में दुनिया के विभिन्न क्षेत्रों से कुल 206 देशों का विवरण है। ठीक-ठीक कितने क्षेत्र? नीचे दी गई क्वेरी इस प्रश्न का उत्तर दे देगी।

SELECT COUNT(DISTINCT(region)) from countries;

पता चलता है कि इस टेबल में 23 अलग-अलग क्षेत्र शामिल हैं, जैसे वेस्टर्न यूरोप, पॉलिनेशिया, मिडिल ईस्ट आदि। आप अपने छोटे-छोटे प्रश्नों के साथ टेबल को एक्सप्लोर कर सकते हैं और इस दौरान रोचक तथ्य मिल सकते हैं। अब एक बुनियादी PostgreSQL CASE की संरचना देखते हैं।

PostgreSQL CASE का परिचय

नीचे दिए गए WHEN-THEN कॉन्स्ट्रक्ट के साथ PostgreSQL केस का सामान्य प्रारूप बताया गया है -

CASE
     WHEN condition_1  THEN result_1
     WHEN condition_2  THEN result_2
     ...
     ELSE  result_n
END

PostgreSQL में CASE बनाते समय ध्यान रखने योग्य कुछ महत्वपूर्ण बिंदु:

  • हर कंडीशन एक बूलियन एक्सप्रेशन होती है और उसके आउटपुट के आधार पर परिणाम चुना जाता है। यदि WHEN के अनुरूप सभी एक्सप्रेशन False निकलते हैं, तो ELSE भाग के अनुरूप परिणाम दिखाया जाता है। यदि आप ELSE भाग नहीं देते; तो क्वेरी null लौटाएगी।

  • किसी कंडीशन को आम तौर पर उस कॉलम पर लगाया जाता है जो उस टेबल में मौजूद हो जिस पर आप काम कर रहे हैं। इस तरह की कंडीशनल क्वेरी कॉन्स्ट्रक्ट प्रायः SELECT स्टेटमेंट्स के साथ किए जाते हैं। ध्यान रखें कि जिस कॉलम पर आप बूलियन एक्सप्रेशंस (CASE में) दे रहे हैं, वह आपके क्वेरी के SELECT स्टेटमेंट में मौजूद होना चाहिए। लेकिन जब आप CASE को where क्लॉज़ के साथ पेयर करते हैं, तो यह आवश्यक नहीं रहता (इस पर आगे चर्चा है)।

  • रिजल्ट्स का डेटा-टाइप समान होना चाहिए। आप result_1 में string और result_2 में integer नहीं लौटा सकते, आदि।

अब कुछ उदाहरण देखते हैं।

PostgreSQL CASE लिखना

सरल से शुरू करते हैं। अब आप स्वतंत्रता वर्ष के अनुसार देशों को समूहित करने के लिए एक CASE लिखेंगे। स्वतंत्रता वर्ष indep_year कॉलम में रिकॉर्ड किए गए हैं। मान लीजिए आपको देशों के स्वतंत्रता वर्षों के तीन समूहों का पालन करना है। आप इसके लिए तीन समूह बनाएंगे -

  • 1900 से पहले (indep_year < 1900)
  • 1900 और 1930 के बीच (indep_year <= 1930)
  • 1930 के बाद (indep_year > 1930)

क्वेरी के अंतिम परिणाम में निम्न कॉलम होने चाहिए -

  • name (देश का नाम)
  • continent (जिस महाद्वीप से देश संबंधित है)
  • indep_year
  • और वह स्वतंत्रता वर्ष समूह जिसे आप बनाएंगे। इसे indep_year_group नाम दें।

अब क्वेरी लिखते हैं -

SELECT name, continent, indep_year,
    CASE WHEN indep_year < 1900 THEN 'before 1900'
         WHEN indep_year <= 1930 THEN 'between 1900 and 1930'
         ELSE 'after 1930' END
         AS indep_year_group
FROM countries
ORDER BY indep_year_group;

(यह क्वेरी DataCamp के Joining Data in SQL कोर्स से प्रेरित है।)

क्वेरी चलाने पर आप कई देश देखेंगे जैसे Palestine, Puerto Rico आदि, जिनके लिए टेबल में स्वतंत्रता वर्ष नहीं दिया गया है। इसलिए वे between 1900 and 1930 समूह में आ गए।

PostgreSQL के CASE में एक से अधिक कंडीशन हो सकती हैं। टेबल में कुछ प्रविष्टियाँ ऐसी हैं जहाँ देश का नाम और राजधानी एक ही है। आप इसे अपने पहले बनाए गए CASE में जोड़ सकते हैं -

SELECT name, continent, indep_year,
    CASE WHEN (indep_year < 1900) AND (countries.name = countries.capital) THEN 'before 1900 and capital same'
         WHEN indep_year <= 1930 AND (countries.name = countries.capital) THEN 'between 1900 and 1930 and capital same'
         ELSE 'after 1930_and_no_same_capital' END
         AS indep_year_group
FROM countries
ORDER BY indep_year_group;

CASE के बारे में एक और रोचक बात यह है कि आप इन्हें SUM() जैसी एग्रीगेट फ़ंक्शंस के साथ पेयर कर सकते हैं। एग्रीगेट फ़ंक्शन SUM() के साथ CASE लागू करने के लिए, एक अलग टेबल लेना अच्छा रहेगा। आइए student_grades नाम की एक सरल टेबल बनाते हैं, जिसमें निम्न कॉलम और डेटा-टाइप्स होंगे -

  • student_name (string)
  • student_stream (string)
  • student_grade (character)

निम्न क्वेरी आपके लिए यह टेबल बनाती है -

CREATE TABLE student_grades
(student_name character varying,
student_stream character varying,
student_grade character);

अब टेबल में कुछ रिकॉर्ड्स इन्सर्ट करते हैं। आप यह कुछ INSERT स्टेटमेंट्स से कर सकते हैं। मान लें इन्सर्शन के बाद student_grades टेबल में निम्न रिकॉर्ड्स हैं -

table

अब, आप एक CASE लिखेंगे ताकि कुछ ग्रेड समूहों से संबंधित छात्रों की संख्या का योग निकाला जा सके। जैसा कि आप देख सकते हैं, टेबल के अनुसार तीन अलग-अलग ग्रेड हैं - A, B और C। कंडीशनल क्वेरी को निम्न जैसी आउटपुट देनी चाहिए -

table

इसके लिए क्वेरी -

SELECT
 SUM (
 CASE
 WHEN student_grade = 'A' THEN
 1
 ELSE
 0
 END
 ) AS "High Scoring",
 SUM (
 CASE
 WHEN student_grade = 'B' THEN
 1
 ELSE
 0
 END
 ) AS "Mid Scoring",
 SUM (
 CASE
 WHEN student_grade = 'C' THEN
 1
 ELSE
 0
 END
 ) AS "Low Scoring"
FROM
 student_grades;

इस तरह आप CASE को एग्रीगेट फ़ंक्शंस के साथ पेयर करके डेटा के बारे में रोचक जानकारियाँ निकाल सकते हैं।

निष्कर्ष और आगे की पढ़ाई

इस ट्यूटोरियल के लिए बस इतना ही। इस ट्यूटोरियल में, आपने अपने SQL क्वेरियों में if-then जैसी कंडीशनिंग को शामिल करके रोचक रिपोर्टिंग तैयार करना सीखा। आपने इस कौशल को मजबूत करने के लिए कई उदाहरणों पर काम किया। यदि आप और चुनौतीपूर्ण अभ्यास ढूंढ रहे हैं, तो आपको SQL पर निम्न DataCamp कोर्स करने चाहिए -

इस ट्यूटोरियल पर अपने प्रश्न Comments सेक्शन में बताने के लिए स्वतंत्र महसूस करें।

विषय
SQL
डेटा साइंस

SQL कोर्स

कोर्स

SQL में Data Manipulation

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