2016-11-20 26 views
2

我有一個網站上的用戶操作的SQLite表。每一行在網站上都是相同的行爲,只是不同的時間/日期,用用戶標識標記。該表有超過2000萬條目。我知道如何通過用戶ID按功能分組來按用戶計數(即A執行了3次操作,B 4,C 2,D 4等)。換句話說,這工作得很好:sqlite:如何獲得組計數

select count(uid) as event_count 
from table 
group by uid 

我要的是一個統計分佈是用戶數誰只花了1個動作,即花了2個操作的用戶的數量等的計數的數據換句話說:該列表可能看起來像:

1 | 339,440 
2 | 452,555 
3 | 99,239 
5 | 20,209 
etc. ... 

我可以使用having event_count = n條款,只是重新運行查詢的每一個整數,直到所有被佔了,但似乎很傻。必須有一種方法,我可以得到兩列的單個列表:組大小和所有采取完全相同數量的操作的用戶數。

+0

爲什麼不將你的結果嗎? –

+0

我不明白你想要什麼。你能舉例說明如何達到你的結果嗎? –

+0

@TimBiegeleisen - 假設您有100個60個用戶創建的活動。有些人創建了1個這樣的事件,有些創建了5個,有些創建了3個。在前面的句子中,我想知道每個「some」是多少。喬治在下面的答案得到了這些數字。 – globalSchmidt

回答

3

簡單,如添加另一個上面分組:由數

select event_count, count(*) as users_count 
from 
(select count(uid) as event_count 
from table 
group by uid) t 
group by event_count 
order by event_count 
+0

美麗。正是我需要的。謝謝! – globalSchmidt