首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Postgres中按数量级对时间间隔进行分组?

如何在Postgres中按数量级对时间间隔进行分组?
EN

Database Administration用户
提问于 2019-06-28 02:32:28
回答 1查看 322关注 0票数 0

我有很多时间间隔,我想分析一下。(成千上万的人)它们从0秒到几千天不等,但大多数都不到10分钟。

我想根据它们的长度来划分它们。

我发现可以使用以下方法按分钟数(忽略秒数)对它们进行分组:

代码语言:javascript
运行
复制
select count(*), date_trunc('minute', gap) as rounded from mytable
group by rounded order by rounded
;

此组将大部分结果分成0-9分钟组.

然而,仍然有数百行,因为所有的奇数(例如21天13小时58分钟)仍然是唯一的,只有截断到最近的分钟。

我想要的是更广泛地对数值进行分组,例如,0到10分钟,然后10-59分钟,1-12小时,13-47小时,2-10天等等。确切的分组并不是特别重要,但重点是我想以不同的方式把时间循环起来,在概念上类似于将它们都舍入到两个“重要数字”。

我怎么才能在Postgres做到这一点?

(注意:查询不必高效,也不必简单,尽管简单性很好。)我正在使用Postgres 10)

EN

回答 1

Database Administration用户

发布于 2019-06-28 04:36:30

CASE表达式可以帮助:

代码语言:javascript
运行
复制
SELECT CASE WHEN gap <= INTERVAL '10 minutes'
            THEN '0-10 minutes'
            WHEN gap <= INTERVAL '59 minutes'
            THEN '10-59 minutes'
            ...
            WHEN gap <= INTERVAL '10 days'
            THEN '2-10 days'
            ELSE 'more than 10 days'
       END AS gap_range
...
GROUP BY gap_range;
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/241589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档