2016-11-20 1 views
2

私は、Webサイト上でユーザーアクションのSQLiteテーブルを持っています。各行は、ウェブサイト上の同じアクションであり、ユーザーIDでタグ付けされた異なる時刻/日付です。このテーブルには20万件以上のエントリがあります。ユーザーごとにカウントを取得する方法(つまり、Aはアクションを3回、B 4、C 2、D 4など)を、ユーザーIDごとにグループごとに使用する方法を理解しています。言い換えれば、これは正常に動作します:私が欲しいものsqlite:グループ数のカウントを取得する方法

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

等のみ1つのアクションを取ったユーザーの数、2つのアクションを取ったユーザーの数のカウントである統計的分布のためのデータであり、別の方法を言った:私はhaving event_count = n句を使用すると、すべてが計上されたが、それは愚かなようであるまで、ちょうどすべての整数のクエリを再実行することができ

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

:リストは次のようになります。グループサイズと同じ数の行動を取ったユーザーの数という2つの列を持つ単一のリストを取得できる方法が必要です。

+0

なぜないグループにあなたの結果をカウントだけ? –

+0

私はあなたが望むものを理解していません。どのようにあなたの結果に到達する方法の例を示すことができますか? –

+0

@TimBiegeleisen - 60人のユーザーが作成した100のイベントがあるとします。イベントのうち1つを作成したものもあれば、作成したものもあれば、作成したものがあるものもあれば、作成されたものもあります。ジョリオの答えは以下のとおりです。 – 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

関連する問題