2013-03-21 3 views
2

중첩 된 그룹 내에서 SQL에서 데이터를 집계하는 방법 : http://sqlfiddle.com/#!1/253b4/1내가 PostgreSQL의를 사용하여이 같은 테이블이 있어요

CREATE TABLE usage_sample 
(
    id serial primary key, 
    category text NOT NULL, 
    name text NOT NULL, 
    sample_time timestamp with time zone NOT NULL 
); 

내가 번호의 수를 반환하는 쿼리를 작성해야합니다 : 여기에 SQL 바이올린을 참조하십시오 분당 샘플 수를 표시하고 범주 및 이름의 각 조합에 대해이 수를 세어보십시오.

cat1, act1, minute1, count 
cat1, act1, minute2, count 
cat1, act2, minute1, count 
cat1, act2, minute3, count 
cat2, act1, minute2, count 
... 

내가 범주와 행동의 각 콤보의 수를 얻을 수에 의해 어떻게 그룹을 사용하여 각 분에 대한 카운트를 얻는 방법을 알고,하지만 난 방법을 알아낼 수 없습니다 : 그래서 출력 우리는 같은 것을 할 수 이들을 결합하여 그룹화와 카운트를 중첩 할 수 있습니다.

sql 바이올린 http://sqlfiddle.com/#!1/253b4/1은 예제 데이터 세트와 내가 시작하려했던 쿼리를 보여줍니다. 누구든지 내가 원하는 결과를 얻는 방법에 대한 조언을 해줄 수 있습니까?

답변

4

이게 원하는가요?

select category, name, date_trunc('minute', sample_time) as minute, count(*) 
from usage_sample 
group by category, name, date_trunc('minute', sample_time) 
order by category, name, minute 
+0

작동합니다. 왜 내가 전에 그것을 보지 못했는지 확실히 모르겠다. 감사. 나는 여기에 업데이트 된 바이올린을 가지고 : http://sqlfiddle.com/#!1/785a0/2 – Allen

관련 문제