Database
 sql >> डेटाबेस >  >> RDS >> Database

शुरुआती के लिए एसक्यूएल हैविंग क्लॉज

SQL में, HAVING क्लॉज का उपयोग किसी समूह या समुच्चय के लिए खोज शर्त निर्दिष्ट करने के लिए किया जा सकता है।

HAVING क्लॉज का प्रयोग आमतौर पर GROUP BY . के साथ किया जाता है खंड। ऐसे मामलों में जहां यह नहीं है, वहां एक अंतर्निहित एकल, समेकित समूह होता है।

HAVING क्लॉज WHERE . के समान है खंड, सिवाय इसके कि WHERE अलग-अलग पंक्तियों को फ़िल्टर करता है, जबकि HAVING फ़िल्टर समूह। WHERE क्लॉज डेटा को पहले फ़िल्टर करता है यह समूहीकृत है, जबकि HAVING बाद data डेटा फ़िल्टर करता है यह समूहीकृत है।

उदाहरण 1 - HAVING COUNT() . के साथ

मान लीजिए हमारे पास निम्न तालिका है:

SELECT * FROM Pets;

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

हम इस तालिका के विरुद्ध निम्न क्वेरी चला सकते हैं:

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;

परिणाम:

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
+-------------+---------+

इस मामले में, हमने HAVING . का उपयोग किया है GROUP BY . के संयोजन में क्लॉज केवल उन पंक्तियों को वापस करने के लिए खंड जिनमें COUNT(PetTypeId) . है 2 . से अधिक का . यह COUNT() . का उपयोग करता है फ़ंक्शन, जो कि अधिकांश प्रमुख RDBMS में उपलब्ध SQL मानक समुच्चय फ़ंक्शन है।

अगर हम HAVING . को छोड़ देते हैं खंड, हमें एक और परिणाम मिलता है:

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
ORDER BY Count DESC;

परिणाम:

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
| 1           | 1       |
+-------------+---------+

उदाहरण 2 - HAVING SUM() . के साथ

यहाँ एक और उदाहरण है। इस बार हम HAVING . का उपयोग करते हैं SUM() . के साथ क्लॉज फ़ंक्शन, जो कि अधिकांश प्रमुख RDBMS में उपलब्ध एक और समग्र कार्य है (देखें SQLite SUM() दूसरे उदाहरण के लिए)।

SELECT
    CountryCode,
    District,
    SUM(Population) AS Population
FROM City
WHERE CountryCode IN ('AGO', 'ARE', 'AUS')
GROUP BY CountryCode, District
HAVING SUM(Population) > 1000000
ORDER BY CountryCode;

परिणाम:

+---------------+-----------------+--------------+
| CountryCode   | District        | Population   |
|---------------+-----------------+--------------|
| AGO           | Luanda          | 2022000      |
| AUS           | New South Wales | 3993949      |
| AUS           | Queensland      | 1805236      |
| AUS           | Victoria        | 2990711      |
| AUS           | West Australia  | 1096829      |
+---------------+-----------------+--------------+

उदाहरण 3 - HAVING IN . के साथ संचालिका

आप केवल ) ऑपरेटर फॉर बिगिनर्स तक सीमित नहीं हैं">ऑपरेटर से बड़ा (> ) HAVING . का उपयोग करते समय खंड। आप उन्हीं ऑपरेटरों का उपयोग कर सकते हैं जिनका उपयोग आप WHERE . के साथ कर सकते हैं खंड (जैसे = , ) Operator for Beginners">< , =) Operator for Beginners">>= , IN , LIKE , आदि)।

यहां एक उदाहरण दिया गया है जो IN . का उपयोग करता है वापस करने के लिए कुल मूल्यों की एक श्रृंखला निर्दिष्ट करने के लिए ऑपरेटर।

SELECT
    CountryCode,
    District,
    SUM(Population) AS Population
FROM City
WHERE CountryCode IN ('AGO', 'ARE', 'AUS')
GROUP BY CountryCode, District
HAVING SUM(Population) IN (2022000, 3993949, 2990711)
ORDER BY CountryCode;

परिणाम:

+---------------+-----------------+--------------+
| CountryCode   | District        | Population   |
|---------------+-----------------+--------------|
| AGO           | Luanda          | 2022000      |
| AUS           | New South Wales | 3993949      |
| AUS           | Victoria        | 2990711      |
+---------------+-----------------+--------------+

उदाहरण 4 - HAVING बिना GROUP BY . के खंड

हालांकि HAVING आमतौर पर GROUP BY . के साथ प्रयोग किया जाता है खंड, इसका उपयोग इसके बिना भी किया जा सकता है। जब इसके बिना उपयोग किया जाता है, तो एक निहित एकल, समेकित समूह होता है।

आपको मिलने वाले परिणाम आपके डीबीएमएस पर निर्भर हो सकते हैं, लेकिन यहां एक उदाहरण दिया गया है जो SQL सर्वर में किया गया था।

SELECT
    SUM(Population) AS Population
FROM City
HAVING SUM(Population) > 2000000;

परिणाम:

+--------------+
| Population   |
|--------------|
| 1429559884   |
+--------------+

यह उदाहरण केवल तालिका में सभी शहरों की कुल जनसंख्या देता है।

यदि हम ऑपरेटर से बड़ा स्वैप करते हैं तो यहां क्या होता है (> ) कम से कम ऑपरेटर के साथ (< )।

SELECT
    SUM(Population) AS Population
FROM City
HAVING SUM(Population) < 2000000;

परिणाम:

(0 rows affected)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मॉड्यूल निर्भरता का उपयोग करना, भाग 2

  2. आईआरआई कार्यक्षेत्र में डेटा वर्गीकरण

  3. CentOS 6 . पर कैसेंड्रा v3 कैसे स्थापित करें

  4. एमएस एसक्यूएल को आईआरआई वर्कबेंच से जोड़ना

  5. नए एएमडी प्रोसेसर परिवार नए इंटेल प्रोसेसर से अच्छी तुलना करते हैं