【问题标题】:How to aggregate data in SQL within nested groups如何在嵌套组中聚合 SQL 中的数据
【发布时间】:2013-03-21 14:05:18
【问题描述】:

我正在使用 PostgreSQL 并且有一个这样的表:请参阅此处的 sql fiddle: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 显示了一个示例数据集和我尝试开始的查询。谁能给我建议如何获得我需要的结果?

【问题讨论】:

    标签: sql postgresql group-by


    【解决方案1】:

    这是你想要的吗?

    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
    

    【讨论】:

    • 那行得通。不太清楚为什么我以前没有看到。谢谢。我在这里有一个更新的小提琴:sqlfiddle.com/#!1/785a0/2
    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2015-12-06
    • 2017-07-26
    • 1970-01-01
    • 2021-09-22
    • 2021-05-06
    相关资源
    最近更新 更多