2012-08-15 13 views
6

sto cercando di costruire l'istruzione SQL corretta (Oracle) per ottenere il conteggio di DEVICE_ID di per ogni customer_id che è maggiore di un dato valore. Ad esempio, voglio sapere che customer_id ha più di 3 device_id. Un singolo dispositivo_id può avere solo un customer_id ad esso associato, mentre un customer_id può avere molti device_id.SQL SELECT Sintassi Per Conte nella clausola WHERE

Table: 
device_id 
customer_id 
.... 

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

risposta

14

per ottenere i clienti con più di 3 dispositivi:

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

Si vuole utilizzare una clausola GROUP BY e HAVING

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

credo y Non ho copiato il mio codice SQL, sono solo stupito che entrambi abbiamo scelto gli stessi nomi e approcci :) –

+0

@Adrian Non ho copiato i tuoi, quando inizialmente hai postato non avevi la clausola 'HAVING'. Di solito uso 'yourtable' come nome generico. – Taryn

+0

Proprio come ho detto prima, penso davvero che non ci fosse copia. Il 'having' è arrivato 10 secondi dopo, come una modifica. È un problema semplice, quindi lo stesso SQL è fattibile. Ero davvero intrattenuto con gli sguardi esatti :) –

1

Quello che vi serve è la clausola having:

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