sql - 获取 Time 的每日行数
问题描述
我的数据库表如下所示:
CREATE TABLE record
(
id INT,
status INT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
我想创建一个通用查询来获取最后一天间隔 3 小时后创建的记录数
例如,我想知道在过去 1 天 3 小时后创建了多少条记录。
到目前为止我所拥有的:在 stackoverflow 的帮助下,我能够创建一个查询来计算一整天的计数。
SELECT
DATE(created_at) AS day, COUNT(1)
FROM
record
WHERE
created_at >= current_date - 1
GROUP BY
DATE(created_at)
这告诉我一整天就像创建了 24 条记录,但我想知道每隔 3 小时创建多少条记录
解决方案
如果您想要最近三个小时的数据计数:
select count(*)
from record
where created_at >= now() - interval '3 hour';
如果您希望最后一天减去 3 小时,那就是 21 小时:
select count(*)
from record
where created_at >= now() - interval '21 hour';
编辑:
您希望过去 24 小时的间隔为 3 小时。最简单的方法可能是generate_series()
:
select gs.ts, count(r.created_at)
from generate_series(now() - interval '24 hour', now() - interval '3 hour', interval '3 hour') gs(ts) left join
record r
on r.created_at >= gs.ts and
r.created_at < gs.ts + interval '3 hour'
group by gs.ts
order by gs.ts;
推荐阅读
- ios - HERE Api - 使用 iOS/Android SDK 和 REST API 的不同路由结果
- java - 如何将文本字段中一次可见的字符数限制为小于文本字段的宽度?
- anypoint-studio - 在 Anypoint Studio 中看不到连接器的属性
- java - 如何使项目兼容 64 位
- python - 如何从字符串中删除 None 类型
- javascript - 如何选择第一个单词相同且最后一个单词可选的属性?
- python - TypeError: 'Tensor' 对象不可调用 | Keras 自动编码器
- python - 基于 xarray 的数据库有哪些可能性?
- c# - 为什么这段代码在 Visual Studio 和 LinqPad 中编译时的运行方式不同?
- javascript - 图像放大镜无法使用 jquery