我有以下数据:
X, Y, Receiver, Timestamp
1.534268, 51.03796, 126, 2017-06-01 02:01:01
1.534268, 51.03793, 126, 2017-06-01 02:03:01
1.534268, 51.03799, 133, 2017-06-01 02:05:01
1.534268, 51.03716, 133, 2017-06-01 02:09:01
1.534268, 51.03766, 126, 2017-06-01 02:10:01
1.534268, 51.03766, 126, 2017-06-01 02:17:01
1.534268, 51.03795, 126, 2017-06-01 02:19:01
1.534268, 51.03791, 133, 2017-06-01 02:22:01
1.534268, 51.03746, 126, 2017-06-01 02:24:01
1.534268, 51.03796, 133, 2017-06-01 02:31:01
我需要sql查询来完成两件事:
以大约10分钟的间隔选择记录,因此我最终得到如下结果:
X, Y, Receiver, Timestamp
1.534268, 51.03796, 126, 2017-06-01 02:01:01
1.534268, 51.03766, 126, 2017-06-01 02:10:01
1.534268, 51.03795, 126, 2017-06-01 02:19:01
1.534268, 51.03796, 133, 2017-06-01 02:31:01
然后,我将如何修改查询以15分钟、30分钟和每小时的间隔选择数据?
从上面的结果,我如何得到一个计数记录的数量,落在每个接收器,即。
Receiver 126: 3,
Receiver 133: 1
2条答案
按热度按时间mspsb9vt1#
“像这样的东西”。嗯,最简单的方法是每十分钟从“日历时钟”中取出第一张唱片。这将是00:00、00:10、00:20等之后的第一个记录。
为此,您可以使用
first_value()
以及select distinct
:这并不完全返回您指定的结果,但它似乎满足问题中提到的条件。
编辑:
我突然想到,从第一个时间戳开始,你可能需要10分钟的间隔。如果是:
我认为这会返回您指定的组。按grp分组;
uurv41yg2#
使用下面的查询,
结果1:
结果2: