2008-08-05 12 views
26

मैं जानता हूँ कि मैं करने की जरूरत है (हालांकि मैं पता नहीं क्यों) count, sum, avg, आदि जैसे किसी भी कुल कार्यों का उपयोग करता है कि एक SQL क्वेरी के अंत पर एक GROUP BY खंड तक :मैं कैसे करूँ T-SQL समूह का उपयोग

SELECT count(userID), userName 
FROM users 
GROUP BY userName 

किसी और जब GROUP BY उपयोगी होगा, और प्रदर्शन असर क्या हैं?

+0

ध्यान दें कि 'ग्रुप बाय' परिणाम सेट का ऑर्डर नहीं करता है। यदि आपको किसी विशेष आदेश की आवश्यकता है, तो –

उत्तर

28

अधिक से अधिक 5 विजेट नहीं है कि प्रत्येक विजेट श्रेणी से विजेट की संख्या को पुनः प्राप्त करने के लिए, आप ऐसा कर सकता है:

SELECT WidgetCategory, count(*) 
FROM Widgets 
GROUP BY WidgetCategory 
HAVING count(*) > 5 

"होने" खंड है कुछ लोगों को अक्सर के बारे में भूल जाते हैं, बजाय सभी को पुनः प्राप्त करने चुनने क्लाइंट के लिए उनका डेटा और इसके माध्यम से फिर से चल रहा है।

1

गिनती बार टैग उपयोग किया जाता है एक गूगल उदाहरण हो सकता है की संख्या:

SELECT TagName, Count(*) 
AS TimesUsed 
FROM Tags 
GROUP BY TagName ORDER TimesUsed 

आप बस टैग की एक अलग मूल्य चाहते हैं, मैं DISTINCT कथन का उपयोग करना पसंद करेंगे।

SELECT DISTINCT TagName 
FROM Tags 
ORDER BY TagName ASC 
0

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

1

समूह रिकॉर्ड्स लौटने से पहले पूरे सेट को पॉप्युलेट करने के लिए मजबूर करता है (क्योंकि यह एक निहित प्रकार है)।

इसी कारण से (और कई अन्य), किसी समूह को उप-उपरोक्त में कभी भी उपयोग न करें।

12

ग्रुप BY DISTINCT के समान है जिसमें यह एक से अधिक रिकॉर्ड समूह करता है।

यह उदाहरण, http://www.devguru.com/technologies/t-sql/7080.asp से उधार लिया गया है, उत्पाद तालिका में विशिष्ट उत्पादों को सूचीबद्ध करता है।

SELECT Product FROM Products GROUP BY Product 

Product 
------------- 
Desktop 
Laptop 
Mouse 
Network Card 
Hard Drive 
Software 
Book 
Accessory 

ग्रुप द्वारा का लाभ DISTINCT से अधिक, यह है कि यह जब एक HAVING क्लॉज़ के साथ प्रयोग किया आप विस्तृत नियंत्रण दे सकते हैं।

SELECT Product, count(Product) as ProdCnt 
FROM Products 
GROUP BY Product 
HAVING count(Product) > 2 

Product  ProdCnt 
-------------------- 
Desktop   10 
Laptop   5 
Mouse    3 
Network Card  9 
Software   6 
+1

द्वारा ऑर्डर जोड़ें बहुत ही आश्चर्यजनक सरल उदाहरण यह +1 है – user96403

संबंधित मुद्दे