2013-03-21 423 views
2

我使用PostgreSQL和有这样的表中汇总数据:请参阅SQL小提琴这里:http://sqlfiddle.com/#!1/253b4/1如何在SQL嵌套组

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

我需要写一个返回计数数查询每分钟内的样本,并为每个类别和名称的组合计算这组计数。所以输出,我们是这样的:

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

我知道如何使用GROUP BY和如何获得类别和行动的每一个组合计数得到的每分钟的计数,但我无法弄清楚如何将这些组合起来,这样我就可以嵌套分组和计数。

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 2013-03-21 14:31:06