2012-08-15 11 views
6

Próbuję skonstruować poprawną instrukcję sql (Oracle), aby uzyskać liczbę identyfikatorów urządzeń dla każdego id_kolanki, która jest większa niż podana wartość. Na przykład chcę poznać identyfikator customer_id, który ma więcej niż 3 device_ids. Pojedynczy identyfikator urządzenia może mieć tylko jeden identyfikator customer_id, który jest z nim powiązany, podczas gdy customer_id może mieć wiele device_ids.SELECT Składnia SQL dla zliczenia w klauzuli WHERE

Table: 
device_id 
customer_id 
.... 

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

Odpowiedz

14

Aby uzyskać klientom więcej niż 3 urządzeń:

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

Będziemy chcieli użyć GROUP BY i HAVING klauzula

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

Wierzę, y nie skopiowałeś mojego kodu SQL, jestem po prostu zdziwiony, że obaj wybieramy te same nazwy i podejścia :) –

+0

@Adrian Nie skopiowałem twojego, kiedy początkowo pisałeś, nie masz klauzuli 'HAVING'. Zwykle używam 'yourtable' jako mojej nazwy ogólnej. – Taryn

+0

Tak jak powiedziałem wcześniej, naprawdę myślę, że nie było kopii. "Posiadanie" pojawiło się 10 sekund później jako edycja. Jest to prosty problem, więc te same SQL są możliwe. Po prostu bardzo się bawiłem z dokładnym wyglądem :) –

1

Co trzeba jest posiadające klauzuli:

select customer_id, count(*) 
from t 
group by customer_id 
having count(*) > 3 
Powiązane problemy