2016-11-20 1 views
2

웹 사이트에서 SQLite 사용자 조치 표가 있습니다. 각 행은 웹 사이트에서 동일한 작업이며, 사용자 ID로 태그 된 다른 시간/날짜입니다. 이 테이블에는 2 천만 개 이상의 항목이 있습니다. 그룹별로 사용자 ID를 사용하여 사용자 (예 : A가 3 번 작업을 수행함, B 4, C 2, D 4 등)를 계산하는 방법을 알고 있습니다. 즉이 잘 작동합니다 :sqlite : 그룹 수를 계산하는 방법

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

는 내가 원하는 것은 단 한 조치를 취 사용자의 수,이 작업을했습니다 사용자의 수 등의 수있는 통계 분포에 대한 데이터입니다 다른 방법을 말했다 : 나는 having event_count = n 절을 사용하고 모두를 차지했다하지만 그 바보 같다 때까지 그냥 모든 정수에 대한 쿼리를 다시 실행 할 수

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

: 목록 같은 것을 볼 수 있습니다. 그룹 크기와 완전히 동일한 수의 작업을 수행 한 사용자의 수라는 두 개의 열이있는 단일 목록을 얻을 수있는 방법이 있어야합니다.

+0

왜 그룹에 결과를 횟수별로? –

+0

나는 당신이 원하는 것을 이해하지 못합니다. 결과를 얻는 방법을 예제로 보여줄 수 있습니까? –

+0

@TimBiegeleisen - 60 명의 사용자가 만든 100 개의 이벤트가 있다고 가정 해보십시오. 어떤 사람들은 그 사건 중 하나를 만들었고, 어떤 사건은 5 개를 만들었고, 어떤 사건은 5 개를 만들었습니다. 어떤 문장을 만들었습니다. 나는 각각의 "몇 가지"가 얼마나 많은지 알고 싶습니다. 아래의 Giorgi의 대답은 이러한 계산을 얻습니다. – 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

관련 문제