जब आप किसी डेटाबेस के साथ काम कर रहे हों, तो आप if/then
. चलाना चाह सकते हैं आपकी क्वेरी में ऑपरेशन। उदाहरण के लिए, हो सकता है कि आप कर्मचारियों की सूची देखना और उनकी परिवीक्षा स्थिति बदलना चाहें, यदि वे आपके साथ एक वर्ष से अधिक समय से काम कर रहे हैं। या हो सकता है कि आप लीडरबोर्ड पर खिलाड़ियों की सूची देखना चाहें और शीर्ष तीन में रैंक करने पर उन्हें विजेता के रूप में चिह्नित करना चाहें।
इन ऑपरेशनों को SQL
. में चलाने के लिए , आपको CASE
. का उपयोग करना होगा बयान। SQL CASE
स्टेटमेंट आपको if/then
run चलाने की अनुमति देता है संचालन, उसी तरह जैसे आप if/then
चला सकते हैं माइक्रोसॉफ्ट एक्सेल में प्रक्रियाएं।
इस गाइड में, हम SQL CASE
. की मूल बातें तोड़ने जा रहे हैं कथन, और चर्चा करें कि आप इसे अपने प्रश्नों में कैसे उपयोग कर सकते हैं। हम यह भी चर्चा करेंगे कि एकाधिक SQL CASE
का उपयोग कैसे करें कथन, और एक्सप्लोर करें कि कैसे CASE
समग्र कार्यों के साथ उपयोग किया जा सकता है।
क्वेरी रिफ्रेशर
डेटाबेस से जानकारी प्राप्त करने के लिए, आपको एक क्वेरी लिखनी होगी। क्वेरी लगभग हमेशा SELECT
. से शुरू होती हैं स्टेटमेंट, जिसका उपयोग डेटाबेस को यह बताने के लिए किया जाता है कि क्वेरी द्वारा कौन से कॉलम वापस किए जाने चाहिए। क्वेरी में आमतौर पर FROM
. भी शामिल होता है क्लॉज, जो डेटाबेस को बताता है कि ऑपरेशन कौन सी टेबल खोजेगा।
SQL
में क्वेरी के लिए सिंटैक्स यहां दिया गया है :
टेबल_नाम से कॉलम_नाम चुनें जहां शर्तें_हैं;
आइए इसे क्रिया में स्पष्ट करने के लिए एक उदाहरण का उपयोग करें। यहां एक प्रश्न है जो हमारे employees
. में सभी कर्मचारियों के नाम लौटाएगा तालिका:
कर्मचारियों से नाम चुनें;
हमारी क्वेरी परिणाम लौटाती है:
नाम |
ल्यूक माइक हन्ना ज्योफ एलेक्सिस एम्मा जोनाह एडम |
(8 पंक्तियाँ)
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
यदि हम एक से अधिक कॉलम प्राप्त करना चाहते हैं, तो हम उनके नामों को एक कॉलम से अलग करके ऐसा कर सकते हैं। या यदि हम प्रत्येक कॉलम के बारे में जानकारी एकत्र करना चाहते हैं, तो हम तारांकन (*
.) का उपयोग कर सकते हैं ) ऑपरेटर, जो एक SQL
. में सभी कॉलम का प्रतिनिधित्व करता है टेबल।
इसके अतिरिक्त, यदि हम विशिष्ट शर्तों के आधार पर रिकॉर्ड्स को फ़िल्टर करना चाहते हैं, तो हम WHERE
का उपयोग कर सकते हैं खंड। यहां एक क्वेरी का एक उदाहरण दिया गया है जो किसी कंपनी की अल्बानी शाखा में स्थित सभी कर्मचारियों के नाम ढूंढती है:
कर्मचारियों से नाम चुनें जहां शाखा ='अल्बानी';
यहाँ हमारी क्वेरी का परिणाम है:
नाम |
एम्मा योना |
(2 पंक्तियाँ)
ये सभी अपेक्षाकृत सरल प्रश्न हैं। लेकिन क्या होगा अगर हम एक if/then
perform प्रदर्शन करना चाहते हैं ऑपरेशन जब हम एक क्वेरी चला रहे हैं? वहीं SQL
CASE
कथन सहायक हो सकता है।
एसक्यूएल केस
CASE
स्टेटमेंट का इस्तेमाल SQL
में किया जा सकता है if/then
. को परिभाषित करने के लिए हमारे कोड में तर्क। उदाहरण के लिए, यदि हम हर उस कर्मचारी को वेतन देना चाहते हैं जिसने हमारे व्यवसाय के साथ पांच या अधिक वर्षों तक काम किया है, तो हम CASE
का उपयोग करना चाह सकते हैं। बयान।
यहां SQL CASE
का सिंटैक्स दिया गया है कथन:
कॉलम1_नाम केस चुनें जब कॉलम 2_नाम ='एक्स' फिर 'वाई' ELSE NULL END AS कॉलम3_नाम टेबल_नाम से;
इस प्रश्न में बहुत कुछ चल रहा है, तो आइए एक उदाहरण का उपयोग करके यह बताएं कि यह कैसे काम करता है। मान लें कि हम प्रत्येक कर्मचारी को पांच से अधिक employee of the month
देना चाहते हैं $200 का पुरस्कार प्रदान करता है। यह रहा एक SQL
कथन जो उस लक्ष्य को पूरा कर सके:
हमारी क्वेरी हमारे खोजे गए केस एक्सप्रेशन से निम्नलिखित लौटाती है:
नाम | लंबित_उठाना |
ल्यूक | <टीडी>|
माइक | <टीडी>|
हन्ना | <टीडी>|
ज्योफ | <टीडी>|
एलेक्सिस | <टीडी>|
एम्मा | 200 |
योना | <टीडी>|
एडम | 200 |
(8 पंक्तियाँ)
आइए इसे तोड़ दें। CASE
कथन प्रत्येक रिकॉर्ड की जाँच करता है और मूल्यांकन करता है कि क्या सशर्त विवरण, employee month awards > 5
, सच हैं। यदि सशर्त कथन सत्य है, तो मान 200
pending_raise
. में प्रिंट किया जाएगा स्तंभ। जहां सशर्त बयान गलत है, वहां एक शून्य मान रहता है।
अंत में, हमारी क्वेरी कर्मचारियों के नामों की सूची के साथ-साथ उन कर्मचारियों के लंबित वेतन वृद्धि को लौटाती है।
यह नोट करना महत्वपूर्ण है कि SQL CASE
स्टेटमेंट हमारी टेबल में नया कॉलम नहीं जोड़ता है। बल्कि, यह हमारे SELECT
. में एक कॉलम बनाता है क्वेरी आउटपुट , ताकि हम देख सकें कि वेतन वृद्धि के लिए कौन पात्र है।
इसके अलावा, अगर हम चाहते हैं कि हर कोई जो वेतन वृद्धि के योग्य नहीं है, उसे . दिया जाए लंबित वृद्धि, हम निर्दिष्ट कर सकते हैं
NULL
. के बजाय हमारे ELSE
. में बयान। हम ORDER BY
. का भी उपयोग कर सकते हैं यदि हम अपने डेटा को एक विशिष्ट क्रम में देखना चाहते हैं तो हमारे स्टेटमेंट को ऑर्डर करने के लिए क्लॉज।
एसक्यूएल केस और कई शर्तें
CASE
स्टेटमेंट को एक ही क्वेरी में कई बार इस्तेमाल किया जा सकता है। यदि हम तीन या अधिक पुरस्कार प्राप्त करने वाले प्रत्येक कर्मचारी को $50 की वृद्धि देना चाहते हैं, और प्रत्येक व्यक्ति जिसके पास पाँच या अधिक पुरस्कार हैं, $200 की वृद्धि करना चाहते हैं, तो हम निम्नलिखित कथन का उपयोग कर सकते हैं:
हमारी क्वेरी का आउटपुट इस प्रकार है:
नाम | लंबित_उठाना |
ल्यूक | 50 |
माइक | |
हन्ना | |
ज्योफ | |
एलेक्सिस | |
एम्मा | 200 |
योना | 50 |
एडम | 200 |
(8 पंक्तियाँ)
हमारे उदाहरण में, CASE
बयानों का मूल्यांकन उसी क्रम में किया जाएगा जिसमें वे लिखे गए हैं।
इसलिए, हमारी क्वेरी पहले उन लोगों की जांच करती है जिनके पास पांच से अधिक पुरस्कार हैं, और उनकी लंबित वृद्धि को 200
पर सेट करते हैं . फिर, हमारी क्वेरी उन लोगों की जांच करती है जिनके पास तीन से अधिक पुरस्कार हैं, और उनकी लंबित वृद्धि को 50
पर सेट करते हैं . अंत में, यदि कोई कर्मचारी किसी भी मानदंड को पूरा नहीं करता है, तो उनकी लंबित वृद्धि को . पर सेट कर दिया जाएगा ।
हालाँकि, यह कोड अधिक कुशल हो सकता है। एक निश्चित क्रम में बयान लिखने के बजाय ताकि हमारा कार्यक्रम काम करे, हमें ऐसे बयान लिखने चाहिए जो ओवरलैप न हों। यहां एक क्वेरी का उदाहरण दिया गया है जो ऊपर की तरह ही काम करती है, लेकिन AND
. का उपयोग करती है एक कर्मचारी द्वारा अर्जित किए गए पुरस्कारों की संख्या की जांच करने के लिए विवरण:
हमारी क्वेरी हमारी उपरोक्त क्वेरी के समान ही लौटाती है। हालांकि, यह CASE
. के क्रम पर निर्भर नहीं करता है कथन, जिसका अर्थ है कि हम गलत कथन के साथ गलती करने की कम संभावना रखते हैं।
एसक्यूएल केस और एग्रीगेट फंक्शंस
आप CASE
. का भी उपयोग कर सकते हैं एक समग्र समारोह के साथ। यह उपयोगी हो सकता है यदि आप केवल एक निश्चित शर्त को पूरा करने वाली पंक्तियों की गणना करना चाहते हैं। उदाहरण के लिए, यदि आप यह जानना चाहते हैं कि कितने कर्मचारियों ने $200 का बोनस अर्जित किया है, तो आप CASE
का उपयोग कर सकते हैं एक समग्र कार्य के साथ।
CASE
. का उपयोग करने के लिए सिंटैक्स यहां दिया गया है एक समग्र कार्य के साथ:
कॉलम 1_नाम का चयन करें जब कॉलम 2_नाम ='एक्स' फिर 'वाई' ईएलएसई न्यूल एंड एएस कॉलम 3_नाम, काउंट (1) जैसा कि टेबल_नाम ग्रुप से कॉलम 3_नाम द्वारा गिना जाता है;
आइए एक उदाहरण का उपयोग करके यह बताएं कि यह कैसे काम करता है। मान लें कि हम यह पता लगाना चाहते हैं कि कितने कर्मचारी $50 या उससे अधिक के बोनस के लिए पात्र हैं। यह जानकारी प्राप्त करने के लिए हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं:
<पूर्व>जब कर्मचारी_माह_पुरस्कार>=3 और कर्मचारी_माह_पुरस्कार <=5 तब 50 जब कर्मचारी_माह_पुरस्कार> 5 तब 200 ईएलएसई 0 END लंबित_राइज़ के रूप में चुनें, COUNT(1) कर्मचारियों से गणना के रूप में लंबित_राइज़ द्वारा समूह;हमारी क्वेरी निम्नलिखित लौटाती है:
लंबित_बढ़ाना | गिनती |
50 | 3 |
3 | |
200 | 2 |
जैसा कि आप देख सकते हैं, हमारी क्वेरी ने कर्मचारियों द्वारा अर्जित लंबित वेतन वृद्धि की सूची के साथ-साथ कर्मचारियों द्वारा देय प्रत्येक प्रकार की वृद्धि की संख्या लौटा दी है। इस मामले में, तीन कर्मचारी $50 की वृद्धि के कारण हैं, तीन कर्मचारियों की कोई वृद्धि नहीं हुई है, और दो कर्मचारी $200 की वृद्धि के कारण हैं।
निष्कर्ष
इस ट्यूटोरियल में, हमने SQL
. के बेसिक्स को तोड़ा है सर्वर CASE
बयान दिया और चर्चा की कि इसे कैसे लागू किया जा सकता है if/then
हमारे प्रश्नों में तर्क। हमने यह भी चर्चा की कि कैसे CASE
कई स्थितियों और समग्र कार्यों के साथ उपयोग किया जा सकता है।
एक अनुस्मारक के रूप में, हर आसान CASE
अभिव्यक्ति को इन नियमों का पालन करना चाहिए:
- द
CASE
स्टेटमेंटSELECT
. में होना चाहिए खंड; - द
CASE
स्टेटमेंट मेंWHEN
शामिल होना चाहिए ,THEN
, औरEND
घटक; - एकाधिक
WHEN
कथन औरELSE
खंड वैकल्पिक रूप से उपयोग किए जा सकते हैं; - सशर्त विवरण, जैसे
AND
याOR
, का उपयोगCASE
. में किया जा सकता हैWHEN
. के बीच क्वेरी औरTHEN
खंड।
अब आप CASE
. का उपयोग करने के लिए आवश्यक ज्ञान से लैस हैं एक SQL
की तरह बयान पेशेवर!