5.1 कथन होना

SQL में एक और उपयोगी ऑपरेटर है जिसका उपयोग किया जाता है GROUP BY, इसे कहा जाता है HAVING

अपने अर्थ में, यह पूरी तरह से ऑपरेटर के अनुरूप है WHERE। यह आपको समूहीकरण से पहले केवल WHEREएक पंक्ति फ़िल्टर सेट करने की अनुमति देता है, और सहायता से HAVINGआप एक फ़िल्टर सेट कर सकते हैं जो समूहीकरण के बाद रिकॉर्ड पर लागू होता है।

ग्रुपिंग और फ़िल्टरिंग ग्रुपिंग परिणामों का उपयोग करते समय क्वेरी का सामान्य दृश्य इस प्रकार है:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition

HAVINGकेवल तभी उपयोग किया जा सकता है जब अनुरोध में शामिल हो GROUP BY

आइए एक प्रश्न लिखें जहां हम साल के हिसाब से काम पर रखे गए कर्मचारियों की संख्या प्रदर्शित करते हैं।

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

और इस प्रश्न का परिणाम:

किराया_वर्ष कुल
2012 1
2013 1
2014 1
2015 2
2018 1

और अब हम इसे उन वर्षों से बाहर कर देते हैं जब एक या कम कर्मचारियों को काम पर रखा गया था। उदाहरण:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1

और इस प्रश्न का परिणाम:

किराया_वर्ष कुल
2015 2

5.3 बयानों के निष्पादन का क्रम

सही और कुशल SQL क्वेरी लिखने के लिए, आपको यह समझने की आवश्यकता है कि SQL सर्वर द्वारा उन्हें कैसे निष्पादित किया जाता है।

कार्रवाई करने की प्रक्रिया सख्ती से विनियमित है और आपकी इच्छा पर निर्भर नहीं करती है। आप ऑपरेटरों को पुनर्व्यवस्थित नहीं कर सकते हैं और एक अलग आदेश प्राप्त कर सकते हैं।

इस क्रम में SQL क्वेरी को कई चरणों में निष्पादित किया जाता है।

  1. चरण 1 - पंक्तियाँ लाना
    • सबसे पहले, निर्दिष्ट तालिका से सभी पंक्तियों का चयन किया जाता है।
    • फिर उनमें परिकलित फ़ील्ड जोड़े जाते हैं।
    • और फिर सभी पंक्तियों में से केवल वे ही शेष रह जाते हैं जो शर्त को पूरा करते हैंWHERE
  2. स्टेज 2 - ग्रुपिंग
    • इसके बाद ग्रुपिंग को परिणामों पर लागू किया जाता है।
    • समूहीकरण के दौरान, फ़ील्ड जैसे COUNT(*).
    • अंत में, समूहीकरण परिणाम पर एक फ़िल्टर लागू किया जाता है HAVING
  3. स्टेज 3 - छँटाई
    • पिछले चरणों में प्राप्त पंक्तियों का उपयोग करके क्रमबद्ध किया जाता है ORDER BY

अंत में, परिणाम को LIMITऔर के साथ ट्रिम किया जा सकता है OFFSET