GROUP BY "डुप्लिकेट नहीं हटाता"। GROUP BY एकत्रीकरण की अनुमति देता है। यदि आप केवल डुप्लीकेट पंक्तियों को जोड़ना चाहते हैं, तो SELECT DISTINCT का उपयोग करें।
यदि आपको कुछ स्तंभों में डुप्लिकेट पंक्तियों को संयोजित करने की आवश्यकता है, तो GROUP BY का उपयोग करें, लेकिन आपको यह निर्दिष्ट करने की आवश्यकता है कि अन्य स्तंभों के साथ क्या करना है। आप या तो उन्हें छोड़ सकते हैं (उन्हें चयन खंड में सूचीबद्ध नहीं करके) या उन्हें एकत्र कर सकते हैं (एसयूएम, मिन और एवीजी जैसे कार्यों का उपयोग करके)। उदाहरण के लिए:
SELECT watch.watch_id, COUNT(rec.street_number), MAX(watch.watch_date)
... GROUP by watch.watch_id
संपादित करें
ओपी ने कुछ स्पष्टीकरण मांगा।
"व्यू" पर विचार करें - FROMs और JOINs और WHEREs द्वारा एक साथ रखे गए सभी डेटा - उस V को कॉल करें। दो चीजें हैं जो आप करना चाहते हैं।
सबसे पहले, आपके पास पूरी तरह से डुप्लिकेट पंक्तियां हो सकती हैं जिसे आप जोड़ना चाहते हैं:
a b c
- - -
1 2 3
1 2 3
3 4 5
फिर बस DISTINCT
. का उपयोग करेंSELECT DISTINCT * FROM V;
a b c
- - -
1 2 3
3 4 5
या, आपके पास आंशिक रूप से डुप्लिकेट पंक्तियां हो सकती हैं जिसे आप जोड़ना चाहते हैं:
a b c
- - -
1 2 3
1 2 6
3 4 5
वे पहली दो पंक्तियाँ कुछ अर्थों में "समान" हैं, लेकिन दूसरे अर्थों में स्पष्ट रूप से भिन्न हैं (विशेष रूप से, वे नहीं होंगी। SELECT DISTINCT द्वारा संयुक्त)। आपको यह तय करना होगा कि उन्हें कैसे संयोजित किया जाए। आप कॉलम c को महत्वहीन बताकर छोड़ सकते हैं:
SELECT DISTINCT a,b FROM V;
a b
- -
1 2
3 4
या आप उन पर किसी प्रकार का एकत्रीकरण कर सकते हैं। आप उन्हें जोड़ सकते हैं:
SELECT a,b, SUM(c) "tot" FROM V GROUP BY a,b;
a b tot
- - ---
1 2 9
3 4 5
आप सबसे छोटा मान चुनें:
SELECT a,b, MIN(c) "first" FROM V GROUP BY a,b;
a b first
- - -----
1 2 3
3 4 5
या आप माध्य (एवीजी), मानक विचलन (एसटीडी), और अन्य कार्यों का एक समूह ले सकते हैं जो सी के लिए मूल्यों का एक समूह लेते हैं और उन्हें एक में जोड़ते हैं।
क्या वास्तव में एक विकल्प नहीं है बस कुछ भी नहीं कर रहा है। यदि आप केवल अवर्गीकृत स्तंभों को सूचीबद्ध करते हैं, तो DBMS या तो एक त्रुटि देगा (Oracle ऐसा करता है - सही विकल्प, imo) या यादृच्छिक (MySQL) पर एक मान अधिक या कम चुनें। लेकिन जैसा कि डॉ. पीयर्ट ने कहा, "जब आप निर्णय नहीं लेने का चुनाव करते हैं, तब भी आपने एक विकल्प बना लिया है।"