MySQL में CASE स्टेटमेंट का उपयोग करके छात्रों के अंकों (Marks) के आधार पर कस्टम परिणाम संदेश (जैसे 'Good Marks', 'Not Good Marks') उत्पन्न करें। यह ग्रेडिंग, रिपोर्टिंग, और सशर्त डेटा लेबलिंग के लिए मानक दृष्टिकोण है।
उदाहरण: 40 अंक थ्रेशोल्ड पर संदेश
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1952 (Marks INT);
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1952 VALUES (35), (65), (55), (39);
डेटा:
+-------+ | Marks | +-------+ | 35 | | 65 | | 55 | | 39 | +-------+
CASE स्टेटमेंट के साथ क्वेरी:
mysql> SELECT
CASE
WHEN Marks > 40 THEN 'Good Marks'
ELSE 'Not Good Marks'
END AS Result
FROM DemoTable1952;
आउटपुट:
+----------------+ | Result | +----------------+ | Not Good Marks | | Good Marks | | Good Marks | | Not Good Marks | +----------------+
CASE स्टेटमेंट प्रकार
1. खोजा गया CASE (Searched CASE) - ऊपर उपयोग किया गया
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
प्रत्येक WHEN एक बूलियन एक्सप्रेशन है; क्रम मायने रखता है।
2. सरल CASE (Simple CASE)
CASE Marks
WHEN 100 THEN 'Perfect'
WHEN 0 THEN 'Zero'
ELSE 'Other'
END
कॉलम मान की विशिष्ट मानों से तुलना करता है।
उन्नत ग्रेडिंग उदाहरण
SELECT Marks,
CASE
WHEN Marks >= 90 THEN 'A+ (Excellent)'
WHEN Marks >= 80 THEN 'A (Very Good)'
WHEN Marks >= 70 THEN 'B (Good)'
WHEN Marks >= 60 THEN 'C (Average)'
WHEN Marks >= 40 THEN 'D (Pass)'
ELSE 'F (Fail)'
END AS Grade
FROM DemoTable1952;
UPDATE में CASE का उपयोग
UPDATE students
SET result = CASE
WHEN marks >= 40 THEN 'Pass'
ELSE 'Fail'
END,
grade = CASE
WHEN marks >= 90 THEN 'A'
WHEN marks >= 75 THEN 'B'
WHEN marks >= 60 THEN 'C'
ELSE 'D'
END;
एग्रीगेशन में CASE (पिवट/क्रॉस-टैब)
SELECT
COUNT(*) AS total,
SUM(CASE WHEN Marks >= 40 THEN 1 ELSE 0 END) AS passed,
SUM(CASE WHEN Marks < 40 THEN 1 ELSE 0 END) AS failed
FROM DemoTable1952;
बेस्ट प्रैक्टिस
- हमेशा ELSE: ELSE न होने पर NULL लौटाता है
- क्रम: पहली मिलान वाली शर्त लागू होती है; विशिष्ट से सामान्य क्रम में लिखें
- डेटा प्रकार: सभी THEN परिणाम संगत प्रकार के होने चाहिए
- पढ़ने योग्यता: इंडेंटेशन और लाइन ब्रेक का उपयोग करें
प्रदर्शन
- CASE एक्सप्रेशन इंडेक्स उपयोग नहीं रोकता (WHERE में न होने पर)
- बड़े परिणाम सेट पर CPU ओवरहेड न्यूनतम
- जटिल CASE को एप्लिकेशन लेयर पर ले जाने पर विचार करें
CASE स्टेटमेंट SQL को घोषणात्मक बनाता है और एप्लिकेशन कोड में कंडीशनल लॉजिक की आवश्यकता कम करता है।