sql - 如何根据 10 分钟内的日期和时间列对数据进行分组和选择?
问题描述
如何根据 10 分钟内的日期和时间列对数据进行分组和选择?
选择:
SELECT *
FROM tbl
WHERE datecollect IN (
SELECT generate_series(
(SELECT min(date_trunc('minute', datecollect)) FROM tbl),
(SELECT max(date_trunc('minute', datecollect)) FROM tbl),
'10 minute'::interval));
桌子:
CREATE TABLE tbl (
valuex varchar,
datecollect timestamp);
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 01:00:41');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 01:05:36');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 01:10:41');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 01:15:11');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 03:00:11');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 03:05:41');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 03:10:11');
INSERT INTO tbl (valuex,datecollect) VALUES ('teste','2020-02-25 03:15:11');
输出:
0 records
解决方案
您需要将JOIN
生成的系列从系列tbl
中datecollect
的时间开始在 10 分钟间隔内的位置。这将为您提供给定间隔的所有行;然后,您可以根据需要聚合,按pstart
. 如果要获得 0 个值,其中没有匹配的间隔值,请使用 aLEFT JOIN
代替。
SELECT *
FROM (
SELECT generate_series(
MIN(date_trunc('minute', datecollect)),
MAX(date_trunc('minute', datecollect)),
'10 minute'::interval
) AS pstart
FROM tbl
) dt
JOIN tbl ON tbl.datecollect > dt.pstart AND tbl.datecollect < dt.pstart + interval '10 minute'
输出(用于您的样本数据):
pstart valuex datecollect
2020-02-25T01:00:00Z teste 2020-02-25T01:00:41Z
2020-02-25T01:00:00Z teste 2020-02-25T01:05:36Z
2020-02-25T01:10:00Z teste 2020-02-25T01:10:41Z
2020-02-25T01:10:00Z teste 2020-02-25T01:15:11Z
2020-02-25T03:00:00Z teste 2020-02-25T03:00:11Z
2020-02-25T03:00:00Z teste 2020-02-25T03:05:41Z
2020-02-25T03:10:00Z teste 2020-02-25T03:10:11Z
2020-02-25T03:10:00Z teste 2020-02-25T03:15:11Z
推荐阅读
- html - 试图将同位素添加到网格库,但它隐藏了每个项目
- jquery - jquery.colorbox.js 幻灯片太慢了
- javascript - 无法在 safari iphone 中使用 dblclick() 函数?
- algorithm - 在访问某些顶点时找到加权图中的最短路径
- java - 我应该使用 tomcat 还是应用程序服务器?
- vue.js - Vuejs 和 Stripe Checkout:错误消息“您是否正确注册了组件?”
- android - 有没有更好的方法将上下文传递给辅助 kotlin 类?
- javascript - 我在使用 transform-decorators-legacy 时遇到问题
- python-3.x - 如何在python中使用相同的键向字典添加值?
- python - 某些数据未存储在数组中