2008-10-26 8 views
15

कल्पना कीजिए मैं इस तरह की मेज है:अद्वितीय रिकॉर्ड कैसे गिनें और SQL का उपयोग करके तालिका में इन यूनिक्सों की संख्या प्राप्त करें?

आईडी: उत्पाद: shop_id

1: बास्केटबॉल: 41

2: फुटबॉल: 41

3: रॉकेट: 45

4: कार: 86

5: विमान: 86

अब, यह बड़े इंटरनेट मॉल का एक उदाहरण है, जहां दुकानें एक ग्राहक को बेचती हैं, इसलिए ग्राहक प्रत्येक दुकान से अधिक उत्पाद चुन सकते हैं और इसे एक टोकरी में खरीद सकते हैं।

हालांकि, मुझे यकीन नहीं है कि कोई एसक्यूएल वाक्यविन्यास है जो मुझे अद्वितीय दुकान_आईड्स और ग्राहक टोकरी में उन दुकानों के उत्पादों की कुल संख्या प्राप्त करने की अनुमति देता है। तो मैं कुछ पाने चाहते हैं की तरह:

दुकान 41 2 उत्पादों

दुकान 45 एक उत्पाद

दुकान 86 दो उत्पाद है

मैं किसी तरह का बनाने के लिए तालिका के माध्यम से स्कूप करने के लिए एसक्यूएल प्रश्नों कर सकते हैं ['shop_id'] ['number_of_products'] सरणी चर जो सभी उत्पादों की दुकान_आईड्स को स्टोर करेगा, फिर "उन्हें अनूठा करें" - ऊपर और गिनें कि मुझे कितनी बार एक और दुकान_आईडी को कुछ शेष रखने के लिए कटौती करना पड़ा था, लेकिन ऐसा लगता है कि ऐसा लगता है बहुत बेकार पटकथा।

यदि आपको कुछ अच्छा और साफ विचार मिलता है, तो कृपया मुझे बताएं।

उत्तर

31

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

select shop_id, count(1) from TABLE_NAME 
    group by shop_id 
+0

(1) गणना के बाद का अर्थ है कि चयन के बाद कौन सा पैरामीटर गिना जाएगा? – Skuta

+2

नहीं, (1) किसी भी कॉलम का संदर्भ नहीं है, यह केवल पूर्णांक मान 1 है। COUNT (*) या COUNT (स्तंभनाम) का उपयोग करना अधिक विशिष्ट है। ग्लोमेक COUNT (1) को निरंतर पूर्णांक मान के रूप में उपयोग कर रहा है, क्योंकि कुछ लोग मानते हैं कि यह कॉलम को संदर्भित करने से तेज़ है। –

+0

अनुकूलक * को गिनती (*) बनाने की देखभाल करना चाहिए जितना समय गिनती (1)। मुझे लगता है कि कुछ अनुकूलक नहीं करते हैं। – yfeldblum

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

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