2012-08-15 58 views
6

我正在嘗試構建正確的sql語句(Oracle)以獲取每個customer_id的device_id的數量大於給定值。例如,我想知道具有多於3個device_ids的customer_id。一個device_id只能有一個與其關聯的customer_id,而customer_id可能有很多device_id。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

要超過3個設備得到客戶:

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

您將要使用GROUP BYHAVING條款

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

我相信y你沒有複製我的SQL代碼,我只是很驚訝,我們都選擇了相同的名稱和方法:) – 2012-08-15 17:33:26

+0

@Adrian我沒有複製你的,當你最初發布你沒有'HAVING'條款。我通常使用'yourtable'作爲我的通用名稱。 – Taryn 2012-08-15 17:34:47

+0

正如我以前說過的,我確實認爲沒有副本。 「擁有」在10秒後出現,作爲編輯。這是一個簡單的問題,所以同樣的SQL是可行的。我真的很享受與確切的外觀:) – 2012-08-15 17:37:13

1

你需要的是having子句:

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