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

SQL में HAVING क्लॉज का उपयोग कैसे करें

इस लेख में, हम HAVING क्लॉज कॉन्सेप्ट और इसे SQL में कैसे इस्तेमाल करें, इसके बारे में जानेंगे।

HAVING क्लॉज क्या है?

स्ट्रक्चर्ड क्वेरी लैंग्वेज में, HAVING क्लॉज का उपयोग ग्रुप बाय क्लॉज के साथ किया जाता है, जो उन शर्तों को निर्दिष्ट करता है जो आउटपुट में प्रदर्शित होने वाले परिणामों को फ़िल्टर करती हैं। यह समूह से केवल वही डेटा लौटाता है, जो शर्तों को पूरा करता है।

HAVING क्लॉज के साथ, हम क्वेरी में भी WHERE क्लॉज का उपयोग कर सकते हैं। अगर हम दोनों क्लॉज़ का एक साथ उपयोग करते हैं, तो WHERE क्लॉज़ पहले निष्पादित होगा जहाँ यह अलग-अलग पंक्तियों को फ़िल्टर करेगा, फिर पंक्तियों को समूहीकृत किया जाएगा और अंत में, HAVING क्लॉज़ समूहों को फ़िल्टर करेगा।

HAVING क्लॉज की शर्तें ग्रुप बाय क्लॉज के बाद रखी जाती हैं। HAVING क्लॉज उसी तरह व्यवहार करता है जैसे स्ट्रक्चर्ड क्वेरी लैंग्वेज में WHERE क्लॉज ग्रुप बाय क्लॉज का उपयोग नहीं करता है। हम MIN, MAX, SUM, AVG और COUNT जैसे समग्र कार्यों का उपयोग कर सकते हैं। इस फ़ंक्शन का उपयोग केवल SELECT क्लॉज़ और HAVING क्लॉज़ के साथ किया जाता है।

HAVING क्लॉज का सिंटैक्स:

SELECT COLUMNS, AGGREGATE FUNCTION, FROM TABLENAME WHERE CONDITION GROUP BY COLUMN HAVING CONDITIONS; 

SQL क्वेरी में HAVING क्लॉज़ का उपयोग कैसे करें, इसके लिए हमें कुछ चरण सीखने होंगे:

1. डेटाबेस नाम के बाद USE कीवर्ड का उपयोग करके डेटाबेस का चयन करके एक नया डेटाबेस बनाएं या मौजूदा डेटाबेस का उपयोग करें।

2. चयनित डेटाबेस के अंदर एक नई तालिका बनाएं, या आप पहले से बनाई गई तालिका का उपयोग कर सकते हैं।

3. यदि तालिका नई बनाई गई है, तो INSERT क्वेरी का उपयोग करके नए बनाए गए डेटाबेस में रिकॉर्ड डालें और HAVING क्लॉज के बिना SELECT क्वेरी का उपयोग करके सम्मिलित डेटा देखें।

4. अब, हम SQL क्वेरी में HAVING क्लॉज़ का उपयोग करने के लिए तैयार हैं।

चरण 1:एक नया डेटाबेस बनाएं या पहले से बनाए गए डेटाबेस का उपयोग करें।

मैंने पहले ही एक डेटाबेस बना लिया है। मैं अपने मौजूदा बनाए गए डेटाबेस नाम का उपयोग करूंगा।

USE SCHOOL;

स्कूल डेटाबेस का नाम है।

जिन लोगों ने डेटाबेस नहीं बनाया है, वे डेटाबेस बनाने के लिए नीचे दी गई क्वेरी का पालन करें:

CREATE DATABASE database_name;

डेटाबेस बनाने के बाद, डेटाबेस नाम के बाद USE कीवर्ड का उपयोग करके डेटाबेस का चयन करें।

चरण 2:एक नई तालिका बनाएं या पहले से मौजूद तालिका का उपयोग करें:

मैंने पहले ही एक टेबल बना लिया है। मैं छात्र नाम की मौजूदा तालिका का उपयोग करूंगा।

नई तालिकाएँ बनाने के लिए नीचे दिए गए तालिका सिंटैक्स का अनुसरण करें:

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

चरण 3:INSERT क्वेरी का उपयोग करके नई बनाई गई तालिका में रिकॉर्ड डालें और SELECT क्वेरी का उपयोग करके रिकॉर्ड देखें।

तालिका में नए रिकॉर्ड सम्मिलित करने के लिए नीचे दिए गए सिंटैक्स का उपयोग करें:

INSERT INTO table_name VALUES(value1, value2, value3);

नीचे दिए गए सिंटैक्स का उपयोग करके तालिका से रिकॉर्ड देखने के लिए:

SELECT * FROM table_name;

निम्न क्वेरी कर्मचारियों के रिकॉर्ड प्रदर्शित करेगी

SELECT * FROM Student;

उपरोक्त SELECT क्वेरी का आउटपुट है:

STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
1 नेहा 85 88 100 273
2 विशाल 70 90 82 242
3 संकीट 75 88 96 259
4 निखिल 60 75 80 215
5 योगेश 56 65 78 199
6 अंकिता 95 85 96 276
7 सोनम 98 89 100 287
8 विनीत 85 90 100 275
9 संकेट 86 78 65 229
10 प्राची 90 80 75 245

चरण 4:हम संरचित क्वेरी भाषा में HAVING खंड का उपयोग करने के लिए तैयार हैं।

अब हम उदाहरणों की मदद से HAVING क्लॉज में गहराई से उतरेंगे।

हमारे पास स्टूडेंट नाम की एक टेबल है जिसमें निम्नलिखित रिकॉर्ड हैं।

STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
1 नेहा 85 88 100 273
2 विशाल 70 90 82 242
3 संकीट 75 88 96 259
4 निखिल 60 75 80 215
5 योगेश 56 65 78 199
6 अंकिता 95 85 96 276
7 सोनम 98 89 100 287
8 विनीत 85 90 100 275
9 संकेट 86 78 65 229
10 प्राची 90 80 75 245

उदाहरण 1: छात्र आईडी के अनुसार जहां भौतिकी के अंकों का योग 60 समूहों से अधिक है, वहां भौतिकी के अंकों का योग प्रदर्शित करने के लिए एक प्रश्न लिखें।

SELECT STUDENT_ID, STUDENT_NAME, SUM(PHYSICS_MARKS) AS PHYSICS_MARKS FROM STUDENT GROUP BY STUDENT_ID  HAVING SUM(PHYSICS_MARKS) > 60;

उपरोक्त क्वेरी में, हमने SUM () नामक एक समग्र फ़ंक्शन लिया है, जिसके बाद कॉलम नाम Physics_marks है, जो कॉलम को जोड़ देगा। पहले Sum(physics_marks) को निष्पादित किया जाता है, फिर HAVING क्लॉज कंडीशन को अंत में निष्पादित किया जाता है, और अंतिम परिणाम प्रदर्शित किया जाएगा। हमने समान मानों को समूहबद्ध करने और उन्हें एक समूह मानने के लिए GROUP BY क्लॉज के बाद कॉलम नाम Student_Id का उपयोग किया है। यदि मान समान नहीं हैं, तो मानों के लिए कोई समूह नहीं बनाया जाएगा। और अंत में, हमने HAVING क्लॉज का उपयोग किया है जहां हमने शर्त रखी है जो केवल उन छात्र विवरणों को प्रदर्शित करने में मदद करेगा जहां भौतिकी के अंकों का योग 60 से अधिक है। यदि छात्र भौतिकी के अंक 60 से कम हैं, तो यह प्रदर्शित नहीं होगा रिकॉर्ड।

उपरोक्त क्वेरी का आउटपुट है:

STUDENT_ID STUDENT_NAME PHYSICS_MARKS
1 नेहा 85
2 विशाल 70
3 संकीट 75
6 अंकिता 95
7 सोनम 98
8 विनीत 85
9 संकेट 86
10 प्राची 90

जैसा कि हम आउटपुट में देख सकते हैं, केवल वे छात्र आईडी, नाम और भौतिकी अंक प्रदर्शित होते हैं जहां भौतिकी के अंकों का योग 60 से अधिक है। जैसा कि हमने ग्रुप बाय क्लॉज का उपयोग किया है और कोई भी मान समान नहीं है, उन्हें एक समूह के रूप में गिना जाता है ।

उदाहरण 2: रसायन विज्ञान के अंकों के अधिकतम अंक प्रदर्शित करने के लिए एक प्रश्न लिखें जहां रसायन विज्ञान के अंकों का अधिकतम अंक छात्र आईडी द्वारा 90 से कम है।

SELECT STUDENT_ID, STUDENT_NAME, MAX(CHEMISTRY_MARKS) AS CHEMISTRY_MARKS FROM STUDENT GROUP BY STUDENT_ID  HAVING MAX(CHEMISTRY_MARKS) < 90;  

उपरोक्त क्वेरी में, हमने MAX () नामक एक समग्र फ़ंक्शन लिया है, जिसके बाद कॉलम नाम केमिस्ट्री_मार्क है, जो कॉलम के अधिकतम अंक प्राप्त करेगा। हमने समान मानों को समूहबद्ध करने और उन्हें एक समूह मानने के लिए GROUP BY क्लॉज के बाद कॉलम नाम Student_Id का उपयोग किया है। यदि मान समान नहीं हैं, तो मानों के लिए एक अलग समूह बनाया जाएगा। और अंत में, हमने HAVING क्लॉज का उपयोग किया है जहां हम शर्त लगाते हैं जो केवल उन छात्र विवरणों को प्रदर्शित करने में मदद करेगा जहां रसायन विज्ञान के अंकों का अधिकतम अंक 90 से कम है। यदि छात्र रसायन विज्ञान के अंक 90 से अधिक हैं, तो यह नहीं होगा रिकॉर्ड प्रदर्शित करें। सबसे पहले, MAX(chemistry_marks) निष्पादित हो जाता है, फिर HAVING क्लॉज कंडीशन को अंत में निष्पादित किया जाता है, और अंतिम परिणाम प्रदर्शित किया जाएगा। उपरोक्त क्वेरी का आउटपुट है:

STUDENT_ID STUDENT_NAME CHEMISTRY_MARKS
1 नेहा 88
3 संकीट 88
4 निखिल 75
5 योगेश 65
6 अंकिता 85
7 सोनम 89
9 संकेट 78
10 प्राची 80

जैसा कि हम आउटपुट में देख सकते हैं, केवल वे छात्र आईडी, नाम और रसायन विज्ञान के अंक प्रदर्शित होते हैं जहां रसायन विज्ञान के अंकों का अधिकतम अंक 90 से कम है। जैसा कि हमने ग्रुप बाय क्लॉज का उपयोग किया है और कोई भी मान समान नहीं है, उन्हें एकल के रूप में गिना जाता है समूह।

उदाहरण 3: गणित के अंकों को प्रदर्शित करने के लिए एक प्रश्न लिखें जहां छात्र आईडी द्वारा गणित के अंकों का न्यूनतम अंक 70 समूहों से अधिक है।

SELECT STUDENT_ID, STUDENT_NAME, MIN(MATHS_MARKS) AS MATHS_MARKS FROM STUDENT GROUP BY STUDENT_ID  HAVING MIN(MATHS_MARKS) >70;

उपरोक्त प्रश्न में, हमने MIN () नामक एक समग्र फ़ंक्शन लिया है, जिसके बाद कॉलम नाम maths_marks है, जो कॉलम के न्यूनतम अंक प्राप्त करेगा। हमने समान मानों को समूहबद्ध करने और उन्हें एक समूह मानने के लिए GROUP BY क्लॉज के बाद कॉलम नाम Student_Id का उपयोग किया है। यदि मान समान नहीं हैं, तो मानों के लिए एक अलग समूह बनाया जाएगा। और अंत में, हमने HAVING क्लॉज का उपयोग किया है जहां हमने शर्त रखी है कि केवल उन छात्र विवरण प्रदर्शित करने में मदद मिलेगी जहां गणित के न्यूनतम अंक 70 से अधिक हैं। यदि छात्र के गणित के अंक 70 से कम हैं, तो यह नहीं होगा रिकॉर्ड प्रदर्शित करें। सबसे पहले, MIN(maths_marks) निष्पादित हो जाता है, फिर HAVING क्लॉज कंडीशन को अंत में निष्पादित किया जाता है, और अंतिम परिणाम प्रदर्शित किया जाएगा।

उपरोक्त क्वेरी का आउटपुट है:

STUDENT_ID STUDENT_NAME MATHS_MARKS
1 नेहा 100
2 विशाल 82
3 संकीट 96
4 निखिल 80
5 योगेश 78
6 अंकिता 96
7 सोनम 100
8 विनीत 100
10 प्राची 75

जैसा कि हम आउटपुट में देख सकते हैं, केवल वे छात्र आईडी, नाम और गणित के अंक प्रदर्शित होते हैं जहां गणित के अंकों का न्यूनतम अंक 70 से अधिक होता है। जैसा कि हमने ग्रुप बाय क्लॉज का उपयोग किया है और कोई भी मान समान नहीं है, उन्हें एकल के रूप में गिना जाता है समूह।

उदाहरण 4: छात्र विवरण प्रदर्शित करने के लिए एक प्रश्न लिखें जहां न्यूनतम भौतिकी के अंक 56 से अधिक हैं, और अधिकतम गणित के अंक 98 से कम हैं।

SELECT STUDENT_ID, STUDENT_NAME, MIN(PHYSICS_MARKS) AS PHYSICS_MARKS , MAX(MATHS_MARKS) AS MATHS_MARKS FROM STUDENT GROUP BY STUDENT_ID HAVING MIN(PHYSICS_MARKS) >58 AND MAX(MATHS_MARKS)<98;

हमने उपरोक्त क्वेरी में एकल क्वेरी मिनट () और अधिकतम () में डबल एग्रीगेट फ़ंक्शन का उपयोग किया। न्यूनतम () का उपयोग भौतिकी के न्यूनतम अंकों का पता लगाने के लिए किया जाता है, और अधिकतम () का उपयोग अधिकतम गणित के अंकों को खोजने के लिए किया जाता है। सबसे पहले, क्वेरी को छात्र तालिका से भौतिकी और गणित के न्यूनतम () और अधिकतम () अंक मिलेंगे। जैसा कि हमने ग्रुप बाय क्लॉज का उपयोग किया है, इसलिए समान मान एक समूह के रूप में मैप किए गए हैं, अन्यथा मान अलग हो जाएंगे। जैसा कि तालिका में कोई मान समान नहीं है, सभी मान अलग हो गए हैं। किसी भी मान को एक समूह के रूप में मैप नहीं किया जाएगा। इसके बाद, हमने HAVING क्लॉज का उपयोग किया, जो WHERE क्लॉज डिफरेंस के रूप में काम करता है, केवल HAVING क्लॉज को ग्रुप में मैप किया जाता है। सबसे पहले, शर्त MIN(PHYSICS_MARKS)> 58 है। चूंकि कोई भी मान समान नहीं है, प्रत्येक मान को न्यूनतम मान माना जाएगा, और शर्त की तुलना में, MAX(MATHS_MARKS) के लिए समान दृष्टिकोण का उपयोग किया जाता है। जैसा कि हमने क्वेरी में AND ऑपरेटर का उपयोग किया था, वे शर्तें दोनों शर्तों को पूरा करती हैं। अंतिम आउटपुट में केवल उन्हीं छात्रों के रिकॉर्ड प्रदर्शित किए जाते हैं।

उपरोक्त क्वेरी का आउटपुट है:

STUDENT_ID STUDENT_NAME PHYSICS_MARKS MATHS_MARKS
2 विशाल 70 82
3 संकीट 75 96
4 निखिल 60 80
6 अंकिता 95 96
9 संकेट 86 65
10 प्राची 90 75

जैसा कि हम आउटपुट में देख सकते हैं, केवल वे छात्र रिकॉर्ड प्रदर्शित किए जाते हैं जहां भौतिकी मूल्यों के न्यूनतम अंक 56 से अधिक हैं, और अधिकतम गणित के अंक 98 से कम हैं।

उपरोक्त उदाहरण में, यदि AND ऑपरेटर के बजाय OR ऑपरेटर का उपयोग किया जाता है, तो सभी दस रिकॉर्ड प्रदर्शित होते हैं क्योंकि OR ऑपरेटर कहता है कि यदि एक शर्त विफल हो जाती है और अन्य शर्तें सत्य होती हैं, तो तालिका रिकॉर्ड शर्तों को पूरा करते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL पिवट - पंक्तियों को कॉलम में बदलने का तरीका जानें

  2. न्यूल ऑन न्यूल इनपुट के साथ यूडीएफ के प्रदर्शन में सुधार करें

  3. स्टार स्कीमा बनाम स्नोफ्लेक स्कीमा

  4. प्रिज्मा, डेटाबेस को कैसे साफ़ करें

  5. अनुकूलन चरण और छूटे हुए अवसर