gpt4 book ai didi

sql - PostgreSQL - 获取按日期时间列分组的表中 N 个间隔的项目数

转载 作者:行者123 更新时间:2023-12-04 08:56:48 24 4
gpt4 key购买 nike

我有一个用户表,其中有以下字段。

| id | created_at | username | 
我想过滤这个表,以便我可以获得在一个日期时间范围内创建的用户数量,分为 N 个间隔。例如对于拥有 created_at 的用户中间 2019-01-01T00:00:002019-01-02T00:00:00分成2个间隔,我会得到这样的东西。
_______________________________
| dt | count |
-------------------------------
| 2019-01-01T00:00:00 | 6 |
| 2019-01-01T12:00:00 | 7 |
-------------------------------
一击就可以做到吗?我目前正在使用我的 Django ORM 创建 N 个日期范围,然后进行 N 个查询,这不是很有效。

最佳答案

生成您想要的时间,然后使用 left join和聚合:

select gs.ts, count(u.id)
from generate_series('2019-01-01T00:00:00'::timestamp,
'2019-01-01T12:00:00'::timestamp,
interval '12 hour'
) gs(ts) left join
users u
on u.created_at >= gs.ts and
u.created_at < gs.ts + interval '12 hour'
group by 1
order by 1;
编辑:
如果要指定行数,可以使用类似的方法:
from generate_series(1, 10, 1) as gs(n) cross join lateral
(values ('2019-01-01T00:00:00'::timestamp + (gs.n - 1) * interval '12 hour')
) v(ts) left join
users u
on u.created_at >= v.ts and
u.created_at < v.ts + interval '12 hour'

关于sql - PostgreSQL - 获取按日期时间列分组的表中 N 个间隔的项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63778569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com