Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> SQL

एसक्यूएल केस

जब आप किसी डेटाबेस के साथ काम कर रहे हों, तो आप 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 कथन जो उस लक्ष्य को पूरा कर सके:

<पूर्व>नाम चुनें, मामला जब कर्मचारी_माह_पुरस्कार> 5 तब 200 अन्यथा पूर्ण अंत के रूप में लंबित_कर्मचारियों से;

हमारी क्वेरी हमारे खोजे गए केस एक्सप्रेशन से निम्नलिखित लौटाती है:

<टीडी>
<टीडी>
<टीडी>
<टीडी>
<टीडी>
<टीडी>
नाम लंबित_उठाना
ल्यूक
माइक
हन्ना
ज्योफ
एलेक्सिस
एम्मा 200
योना
एडम 200

(8 पंक्तियाँ)

आइए इसे तोड़ दें। CASE कथन प्रत्येक रिकॉर्ड की जाँच करता है और मूल्यांकन करता है कि क्या सशर्त विवरण, employee month awards > 5 , सच हैं। यदि सशर्त कथन सत्य है, तो मान 200 pending_raise . में प्रिंट किया जाएगा स्तंभ। जहां सशर्त बयान गलत है, वहां एक शून्य मान रहता है।

अंत में, हमारी क्वेरी कर्मचारियों के नामों की सूची के साथ-साथ उन कर्मचारियों के लंबित वेतन वृद्धि को लौटाती है।

यह नोट करना महत्वपूर्ण है कि SQL CASE स्टेटमेंट हमारी टेबल में नया कॉलम नहीं जोड़ता है। बल्कि, यह हमारे SELECT . में एक कॉलम बनाता है क्वेरी आउटपुट , ताकि हम देख सकें कि वेतन वृद्धि के लिए कौन पात्र है।

इसके अलावा, अगर हम चाहते हैं कि हर कोई जो वेतन वृद्धि के योग्य नहीं है, उसे . दिया जाए लंबित वृद्धि, हम निर्दिष्ट कर सकते हैं NULL . के बजाय हमारे ELSE . में बयान। हम ORDER BY . का भी उपयोग कर सकते हैं यदि हम अपने डेटा को एक विशिष्ट क्रम में देखना चाहते हैं तो हमारे स्टेटमेंट को ऑर्डर करने के लिए क्लॉज।

एसक्यूएल केस और कई शर्तें

CASE स्टेटमेंट को एक ही क्वेरी में कई बार इस्तेमाल किया जा सकता है। यदि हम तीन या अधिक पुरस्कार प्राप्त करने वाले प्रत्येक कर्मचारी को $50 की वृद्धि देना चाहते हैं, और प्रत्येक व्यक्ति जिसके पास पाँच या अधिक पुरस्कार हैं, $200 की वृद्धि करना चाहते हैं, तो हम निम्नलिखित कथन का उपयोग कर सकते हैं:

<पूर्व>नाम चुनें, मामला जब कर्मचारी_माह_पुरस्कार> 5 तब 200 जब कर्मचारी_माह_पुरस्कार> 3 तब 50 ईएलएसई 0 END जैसा कि लंबित_कर्मचारियों से उठाया जाए;

हमारी क्वेरी का आउटपुट इस प्रकार है:

नाम लंबित_उठाना
ल्यूक 50
माइक
हन्ना
ज्योफ
एलेक्सिस
एम्मा 200
योना 50
एडम 200

(8 पंक्तियाँ)

हमारे उदाहरण में, CASE बयानों का मूल्यांकन उसी क्रम में किया जाएगा जिसमें वे लिखे गए हैं।

इसलिए, हमारी क्वेरी पहले उन लोगों की जांच करती है जिनके पास पांच से अधिक पुरस्कार हैं, और उनकी लंबित वृद्धि को 200 पर सेट करते हैं . फिर, हमारी क्वेरी उन लोगों की जांच करती है जिनके पास तीन से अधिक पुरस्कार हैं, और उनकी लंबित वृद्धि को 50 पर सेट करते हैं . अंत में, यदि कोई कर्मचारी किसी भी मानदंड को पूरा नहीं करता है, तो उनकी लंबित वृद्धि को . पर सेट कर दिया जाएगा ।

हालाँकि, यह कोड अधिक कुशल हो सकता है। एक निश्चित क्रम में बयान लिखने के बजाय ताकि हमारा कार्यक्रम काम करे, हमें ऐसे बयान लिखने चाहिए जो ओवरलैप न हों। यहां एक क्वेरी का उदाहरण दिया गया है जो ऊपर की तरह ही काम करती है, लेकिन AND . का उपयोग करती है एक कर्मचारी द्वारा अर्जित किए गए पुरस्कारों की संख्या की जांच करने के लिए विवरण:

<पूर्व>नाम चुनें, मामला जब कर्मचारी_माह_पुरस्कार>=3 और कर्मचारी_माह_पुरस्कार <=5 तब 50 जब कर्मचारी_माह_पुरस्कार> 5 तब 200 ईएलएसई 0 END जैसे लंबित_कर्मचारियों से;

हमारी क्वेरी हमारी उपरोक्त क्वेरी के समान ही लौटाती है। हालांकि, यह 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 की तरह बयान पेशेवर!


  1. SQL सर्वर में क्वेरी सबक्वायरी चाइल्ड

    निम्न लेख आपको सिंटैक्स और उदाहरणों के साथ SQL सर्वर में उप-प्रश्नों का उपयोग करने का तरीका दिखाएगा। एसक्यूएल (सबक्वेरी) में सबक्वेरी क्या है? SQL सर्वर में, एक सबक्वेरी एक क्वेरी है जो किसी अन्य क्वेरी में रहती है। आप SQL कमांड में क्वेरी बना सकते हैं। ये सबक्वेरी WHERE, FROM या SELECT क्लॉज में है

  1. माइक्रोसॉफ्ट एसक्यूएल सर्वर क्वेरी स्टोर

    Microsoft® SQL Server® क्वेरी स्टोर, जैसा कि नाम से पता चलता है, एस्टोर की तरह है जो निष्पादित प्रश्नों, क्वेरी रनटाइम निष्पादन आंकड़ों और निष्पादन योजनाओं के डेटाबेस इतिहास को कैप्चर करता है। चूंकि डेटा डिस्क पर संग्रहीत है, आप समस्या निवारण उद्देश्यों के लिए कभी भी क्वेरी स्टोर डेटा पुनर्प्राप्त क

  1. एसक्यूएल संगरोध

    यह ब्लॉग पोस्ट SQL संगरोध की अवधारणा का परिचय देता है। Oracle® संसाधन प्रबंधक का उपयोग करके, आप CPU और I/O जैसे अन्य संसाधनों के उपयोग को विनियमित और सीमित कर सकते हैं। सबसे दिलचस्प तथ्य यह है कि आप किसी भी लंबे समय से चल रही क्वेरी के निष्पादन को रोक सकते हैं जो एक निर्धारित सीमा से अधिक है। एसक्यू