相关疑难解决方法(0)

如何从时间戳表中每小时选择一行数据?

如果这令人困惑,请原谅我,因为我对postgresql不是很熟悉.我有一个postgres数据库,其中包含一个充满"站点"的表.每个站点每小时报告一次,当它报告时,它会在此表中生成一个条目,如下所示:

site |      tstamp
-----+--------------------
6000 | 2013-05-09 11:53:04
6444 | 2013-05-09 12:58:00
6444 | 2013-05-09 13:01:08
6000 | 2013-05-09 13:01:32
6000 | 2013-05-09 14:05:06
6444 | 2013-05-09 14:06:25
6444 | 2013-05-09 14:59:58
6000 | 2013-05-09 19:00:07
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,时间戳几乎从不在鼻子上,有时在几分钟/秒内彼此会有2个或更多.此外,有些网站不会一次报告数小时(有时).我想每小时只为每个站点选择一个条目(尽可能接近每小时).我怎样才能以有效的方式做到这一点?我还需要将其扩展到其他时间范围(例如每个站点每天一个条目 - 尽可能接近午夜).

感谢您提出任何建议.

sql database postgresql timestamp

4
推荐指数
2
解决办法
7348
查看次数

在PostgreSQL中聚合(x,y)坐标点云

我有一个PostgreSQL数据库表,具有以下简化结构:

  • 设备ID varchar
  • Pos_X(int)
  • Pos_Y(int)

基本上,该表包含许多用于设备的二维航路点数据.现在我想设计一个减少输出中坐标数量的查询.它应聚合附近的坐标(对于某个x,y阈值)一个例子:

第1行:DEVICE1; 603; 1205

第2行:DEVICE1; 604; 1204

如果阈值为5,那么这两行应该聚合,因为方差小于5.任何想法如何在PostgreSQL或SQL中一般这样做?

sql postgresql aggregate

3
推荐指数
1
解决办法
1064
查看次数

按范围分组记录

我需要选择落在某个范围内的项目数

create table numbers (val int);

insert into numbers(val) values (2), (3), (11), (12), (13), (31);

select count(1) as qty , val / 10 as range
from numbers
group by val / 10;
Run Code Online (Sandbox Code Playgroud)

显然,如果范围内没有项目,它将不会包含在输出中.我可以想到一些不太优雅的方法来包含输出中的所有范围,但是有一个优雅而快速的方法(在PostgreSQL或MS SQL Server方言中)

sql sql-server postgresql

2
推荐指数
1
解决办法
1941
查看次数

标签 统计

postgresql ×3

sql ×3

aggregate ×1

database ×1

sql-server ×1

timestamp ×1