我正在使用PostgreSQL并有一个这样的表:请参阅此处的sql小提琴:http://sqlfiddle.com/#!1/253b4/1
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 fiddle http://sqlfiddle.com/#!1/253b4/1显示了一个示例数据集和我尝试开始的查询。谁能给我建议如何得到我需要的结果?
答案 0 :(得分: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