2012-08-15 13 views
6

में गणना के लिए एसक्यूएल सिंटेक्स चुनें मैं प्रत्येक ग्राहक_आईडी के लिए डिवाइस_आईडी की गिनती प्राप्त करने के लिए सही एसक्यूएल स्टेटमेंट (ओरेकल) बनाने की कोशिश कर रहा हूं जो किसी दिए गए मान से अधिक है। उदाहरण के लिए, मैं ग्राहक_आईडी को जानना चाहता हूं जिसमें 3 से अधिक डिवाइस_आईड्स हैं। एक डिवाइस_आईडी में केवल एक ग्राहक_आईडी हो सकती है, जबकि ग्राहक_आईडी में कई डिवाइस_आईड्स हो सकते हैं।WHERE क्लॉज

Table: 
device_id 
customer_id 
.... 

Data (device_id, customer_id): 
00001, CUST1 
00002, CUST1 
00003, CUST1 
00004, CUST1 
00005, CUST2 
00006, CUST2 

उत्तर

14

अधिक से अधिक 3 उपकरणों के साथ ग्राहकों को प्राप्त करने के लिए:

select customer_id, count(device_id) 
from YourTable 
Group by customer_id 
having count(device_id) > 3 
3

आप एक GROUP BY और HAVING खंड

select customer_id, count(device_id) 
from YourTable 
group by customer_id 
having count(device_id) > 3 
+0

मुझे विश्वास है y कहां मेरे एसक्यूएल कोड की प्रतिलिपि नहीं बनाई गई, मुझे आश्चर्य है कि हम दोनों ने एक ही नाम और दृष्टिकोण उठाए हैं :) –

+0

@ एड्रियन मैंने आपकी प्रतिलिपि नहीं बनाई, जब आपने शुरू में पोस्ट किया था तो आपके पास 'हैविंग' क्लॉज नहीं था। मैं आम तौर पर अपने सामान्य नाम के रूप में 'yourtable' का उपयोग करता हूं। – Taryn

+0

जैसा कि मैंने पहले कहा था, मुझे सच में लगता है कि कोई प्रतिलिपि नहीं थी। एक संपादन के रूप में 'होने' 10 सेकंड बाद आया था। यह एक साधारण समस्या है, इसलिए एक ही एसक्यूएल व्यवहार्य है। मैं वास्तव में सटीक दिखने के साथ वास्तव में मनोरंजन किया गया था :) –

1

क्या आप की जरूरत होने खंड है का उपयोग करना चाहते जाएगा:

select customer_id, count(*) 
from t 
group by customer_id 
having count(*) > 3 
संबंधित मुद्दे