2012-08-15 23 views
6

私は、指定された値よりも大きい各customer_idのdevice_idの数を取得するために正しいSQL文(Oracle)を作成しようとしています。たとえば、3つ以上のdevice_idを持つcustomer_idを知りたいとします。 1つのdevice_idには1つのcustomer_idしか関連付けられませんが、customer_idには多くのdevice_idが含まれます。 3つの以上のデバイスと顧客を取得するにはSELECT SQL構文WHERE句でのカウントの場合

Table: 
device_id 
customer_id 
.... 

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

答えて

14

:あなたはあなたが必要なものGROUP BYHAVING

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

が持つ句です:

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

私は信じています私はSQLコードをコピーしていませんでした。私は同じ名前とアプローチの両方を選んだことに驚いています:) –

+0

@Adrian最初にあなたが投稿したときにあなたはHAVING節を持っていませんでした。私は通常、あなたの総称として 'yourtable'を使います。 – Taryn

+0

私が前に言ったように、私は本当にコピーがないと思う。 「持っている」は10秒後に編集として来た。それは簡単な問題なので、同じSQLが実現可能です。私はちょうど本当に正確な外見で楽しまれていた:) –

1

を使用したいと思うでしょう

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