2012-08-15 8 views
6

Estoy intentando construir la instrucción sql correcta (Oracle) para obtener el recuento de device_id para cada id_cliente que sea mayor que un valor dado. Por ejemplo, quiero saber los customer_id's que tienen más de 3 device_ids. Un único device_id solo puede tener un customer_id asociado, mientras que un customer_id puede tener muchos device_ids.SELECCIONE la sintaxis de SQL para recuento en la cláusula WHERE

Table: 
device_id 
customer_id 
.... 

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

Respuesta

14

Para llegar a los clientes con más de 3 dispositivos:

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

Usted tendrá que utilizar una cláusula GROUP BY y HAVING

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

I do believe y o no copió mi código SQL, estoy sorprendido de que ambos escogimos los mismos nombres y enfoques :) –

+0

@Adrian No copié el suyo, cuando inicialmente había publicado no tenía la cláusula 'HAVING'. Normalmente uso 'yourtable' como mi nombre genérico. – Taryn

+0

Tal como dije antes, realmente creo que no hubo copia. El 'tener' vino 10 segundos después, como una edición. Es un problema simple, por lo que el mismo SQL es factible. Estaba realmente entretenido con el aspecto exacto :) –

1

Lo que se necesita es la cláusula having:

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