SQL Academy · पाठ

CASE Expressions और Pivot Queries

CASE WHEN को aggregates के भीतर उपयोग करके लंबी tables को चौड़ी cross-tab reports में pivot कीजिए।

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

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

CASE: एसक्यूएल में इनलाइन यदि/अन्यथा

CASE, एसक्यूएल का ternary ऑपरेटर है। इसके दो रूप हैं:

-- Searched CASE
CASE WHEN x > 0 THEN 'positive'
     WHEN x < 0 THEN 'negative'
     ELSE 'zero' END

-- Simple CASE
CASE status
  WHEN 'A' THEN 'active'
  WHEN 'P' THEN 'pending'
  ELSE 'unknown'
END

SELECT में CASE

एक व्युत्पन्न कॉलम की गणना करें:

SELECT id, total,
       CASE
         WHEN total >= 1000 THEN 'whale'
         WHEN total >=  100 THEN 'regular'
         ELSE 'small'
       END AS bucket
FROM orders;

WHERE और ORDER BY में CASE

कस्टम फ़िल्टरिंग और क्रमबद्ध करना:

-- Custom sort:
ORDER BY
  CASE WHEN status = 'urgent' THEN 0 ELSE 1 END,
  created_at DESC;

-- Conditional filter:
WHERE CASE WHEN $1 = 'paid' THEN status = 'paid'
           ELSE status IN ('pending','paid')
      END;

एग्रीगेट के अंदर CASE: शर्त-आधारित गणनाएँ

पिवट करने की पारंपरिक तरकीब:

SELECT user_id,
       COUNT(*) AS total,
       SUM(CASE WHEN status = 'paid'      THEN 1 ELSE 0 END) AS paid,
       SUM(CASE WHEN status = 'pending'   THEN 1 ELSE 0 END) AS pending,
       SUM(CASE WHEN status = 'cancelled' THEN 1 ELSE 0 END) AS cancelled
FROM orders
GROUP BY user_id;

FILTER: अधिक स्पष्ट विकल्प

PostgreSQL का FILTER क्लॉज़ अधिक पढ़ने योग्य है:

SELECT user_id,
       COUNT(*)                                     AS total,
       COUNT(*) FILTER (WHERE status = 'paid')      AS paid,
       COUNT(*) FILTER (WHERE status = 'pending')   AS pending,
       COUNT(*) FILTER (WHERE status = 'cancelled') AS cancelled
FROM orders
GROUP BY user_id;

कॉलमों में महीनों का पिवट करना

CASE और एग्रीगेट का उपयोग करके लंबे प्रारूप को चौड़े प्रारूप में बदलें:

SELECT year,
       SUM(CASE WHEN month =  1 THEN revenue END) AS jan,
       SUM(CASE WHEN month =  2 THEN revenue END) AS feb,
       -- ...
       SUM(CASE WHEN month = 12 THEN revenue END) AS dec
FROM monthly_revenue
GROUP BY year
ORDER BY year;

श्रेणियों का पिवट करना

हर उपयोगकर्ता के लिए एक पंक्ति और हर स्थिति के लिए एक कॉलम:

SELECT user_id,
       SUM(total) FILTER (WHERE status = 'paid')      AS paid_total,
       SUM(total) FILTER (WHERE status = 'pending')   AS pending_total
FROM orders GROUP BY user_id;

CASE पिवट की सीमाएँ

आपको लिखते समय लक्ष्य कॉलमों का पता होना चाहिए। गतिशील पिवट के लिए, अपने एप्लिकेशन में एसक्यूएल तैयार करें या प्रक्रियात्मक PL/pgSQL का उपयोग करें।

CASE बनाम COALESCE / NULLIF

COALESCE = “पहला non-NULL”। NULLIF = “समान होने पर NULL”। CASE अधिक सामान्य है — जब COALESCE/NULLIF उपयुक्त न हों, तब इसका उपयोग करें।

प्रकारों की संगतता

CASE की सभी शाखाओं से संगत प्रकार प्राप्त होने चाहिए। प्रकार मिलाने पर स्पष्ट रूप से Cast करें:

SELECT CASE WHEN x THEN 1::TEXT ELSE 'no' END;

नेस्टेड CASE

बहु-स्तरीय शाखाकरण:

SELECT CASE
  WHEN amount IS NULL THEN 'no payment'
  WHEN amount = 0     THEN 'free'
  WHEN amount < 10    THEN 'cheap'
  ELSE
    CASE WHEN paid_at IS NULL THEN 'overdue' ELSE 'paid' END
END AS status FROM invoices;

पुनरावलोकन

CASE, एसक्यूएल में सार्वभौमिक “यदि/अन्यथा” है।

  • SELECT से गणना किए गए कॉलम
  • CASE-इन-एग्रीगेट या FILTER के ज़रिए पिवट
  • कस्टम WHERE / ORDER BY तर्क

त्वरित जाँच

PostgreSQL में शर्त-आधारित एग्रीगेशन के लिए कौन-सा क्लॉज़ सबसे अधिक पढ़ने योग्य है?

शुरुआत निःशुल्क

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

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

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

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

क्या “CASE Expressions और Pivot Queries” पाठ निःशुल्क है?

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

“CASE Expressions और Pivot Queries” में मैं क्या सीखूँगा?

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

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

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

“CASE Expressions और Pivot Queries” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. UNION, INTERSECT, EXCEPT
  2. UNION ALL बनाम UNION (Deduplication की लागत)
  3. CASE Expressions और Pivot Queries
  4. Crosstab Patterns (PostgreSQL crosstab())
← SQL Academy पर वापस जाएँ