2014-03-06 33 views
0

我想做一個奇怪的SQL查詢,我似乎無法弄清楚。我有以下架構:基於唯一的用戶名計數記錄數

username ip 
user1 12345 
user2 12345 
user3 11111 

我想要統計用戶的每個ip的數量。因此,例如,它會向我報告

11111 1 
12345 2 

我想也該以最少的排序,最多的,讓我可以看到IP 12345具有與之相關聯2個帳戶和與之關聯的11111有1個賬戶。

謝謝!

+0

可能的重複[如何在同一個select語句中使用count和group](http://stackoverflow.com/questions/2722408/how-to-use-count-and-group-by-at-the -same-select-statement) –

+2

如果你認爲一個簡單的計數查詢很奇怪,那麼你將面臨一些重大的衝擊... –

+0

@MarcB謝謝我正在推翻這一點。 – MasterGberry

回答

3

集團由ip並添加distinct到您的用戶數來算只有唯一的名稱

select ip, 
     count(distinct username) as unique_user_count 
from your_table 
group by ip 
0

這裏是一個SQL Fiddle示範你需要什麼。

SELECT ip, COUNT(username) AS username_count 
FROM `sample` 
GROUP BY ip 

GROUP BY允許您通過ip彙總數據。如果username列上已定義UNIQUE約束,則DISTINCT不應該是必需的。

相關問題