2012-08-15 10 views
6

Ich versuche, die richtige SQL-Anweisung (Oracle) zu konstruieren, um die Anzahl der Geräte-IDs für jede Kunden-ID, die größer als ein gegebener Wert ist. Zum Beispiel möchte ich die customer_id's kennen, die mehr als 3 device_ids haben. Einer einzelnen device_id kann nur eine customer_id zugeordnet sein, während eine customer_id viele device_ids haben kann.SELECT SQL-Syntax für Count in WHERE-Klausel

Table: 
device_id 
customer_id 
.... 

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

Antwort

14

Um die Kunden mit mehr als 3 Geräte erhalten:

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

Sie erhalten eine GROUP BY und HAVING Klausel

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

Ich glaube, y Du hast meinen SQL-Code nicht kopiert, ich bin nur erstaunt, dass wir beide die gleichen Namen und Ansätze gewählt haben :) –

+0

@Adrian Ich habe deine nicht kopiert, als du ursprünglich gepostet hast, hast du nicht die 'HAVING'-Klausel. Ich verwende normalerweise "yuertable" als meinen generischen Namen. – Taryn

+0

Wie ich schon sagte, ich glaube wirklich, dass es keine Kopie gab. Das 'Haben' kam 10 Sekunden später, als Bearbeitung. Es ist ein einfaches Problem, so dass SQL auch machbar ist. Ich war nur wirklich mit dem genauen Aussehen unterhalten :) –

1

Was Sie die having-Klausel ist, müssen verwenden möchten:

select customer_id, count(*) 
from t 
group by customer_id 
having count(*) > 3