समस्या:
आप किसी समूह में विशिष्ट संख्या में प्रविष्टियों वाली पंक्तियों के समूह खोजना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में product
निम्नलिखित कॉलम में डेटा के साथ:id
, name
और category
।
आईडी | <थ>नामश्रेणी | |
---|---|---|
1 | सोफा | फर्नीचर |
2 | दस्ताने | कपड़े |
3 | टी-शर्ट | कपड़े |
4 | कुर्सी | फर्नीचर |
5 | डेस्क | फर्नीचर |
6 | देखो | इलेक्ट्रॉनिक्स |
7 | आर्मचेयर | फर्नीचर |
8 | स्कर्ट | कपड़े |
9 | रेडियो रिसीवर | इलेक्ट्रॉनिक्स |
आइए दो से अधिक प्रविष्टियों वाले उत्पादों की श्रेणी खोजें।
समाधान:
SELECT category, COUNT(id) FROM product GROUP BY category HAVING COUNT(id)>2;
ये रहे परिणाम:
श्रेणी | <थ>गिनती|
---|---|
फर्नीचर | 4 |
कपड़े | 3 |
चर्चा:
समूह में दी गई पंक्तियों की संख्या के अनुसार रिकॉर्ड्स को फ़िल्टर करने के लिए, HAVING क्लॉज का उपयोग करें। यह COUNT जैसे कंडीशन एग्रीगेट फ़ंक्शन का उपयोग करके पंक्तियों को फ़िल्टर करता है। सबसे पहले, SELECT में, समूह पंक्तियों के लिए कॉलम या कॉलम के नाम का उपयोग करें (यह हमारे उदाहरण में एक श्रेणी है), फिर कुल फ़ंक्शन COUNT रखें, जो प्रत्येक समूह में रिकॉर्ड की संख्या का मिलान करता है। पंक्तियों की संख्या गिनने के लिए, अद्वितीय मानों को संग्रहीत करने वाले आईडी कॉलम का उपयोग करें (हमारे उदाहरण में हम COUNT(id)
का उपयोग करते हैं) ) इसके बाद, ग्रुप बाय क्लॉज का उपयोग कॉलम के अनुसार ग्रुप रिकॉर्ड्स के लिए करें (GROUP BY
उपरोक्त श्रेणी)। COUNT जैसे कुल कार्यों के साथ रिकॉर्ड्स को फ़िल्टर करने के लिए GROUP BY का उपयोग करने के बाद, HAVING क्लॉज का उपयोग करें। इसका उपयोग हमेशा ग्रुप बाय क्लॉज के बाद किया जाता है। HAVING में, हम कुल फ़ंक्शन द्वारा लौटाए गए मान की तुलना करने के लिए एक शर्त का उपयोग करते हैं। उदाहरण में, हम तुलना करते हैं कि क्या COUNT(id) दो से अधिक मान देता है। अगर सही है, तो श्रेणी को उत्पाद संख्या के साथ लौटा दिया जाता है।