【发布时间】:2014-11-13 19:01:28
【问题描述】:
我有一个类似这样结构的 PostgreSQL 表
id elementid timestamp providerid x y
1 1 2014-10-01T00:00:00Z 12 12 18
2 1 2014-10-01T00:10:00Z 12 14 18
3 1 2014-10-01T00:15:00Z 12 16 20
4 2 2014-10-01T00:50:00Z 12 12 18
5 2 2014-10-01T01:10:00Z 12 14 18
6 2 2014-10-01T01:15:00Z 12 16 20
7 7 2014-10-01T00:00:00Z 14 12 18
8 7 2014-10-01T00:10:00Z 14 14 18
9 7 2014-10-01T00:15:00Z 14 16 20
我想计算每小时和位置属于同一providerid 的不同elementid 的数量。
一个例子
00:00到01:00之间,在xmin=12, ymin=18, xmax=16, ymax=20定义的框内,有2 个元素 属于 providerid 12(4 个第一条记录:elementid = 1 的元素和 elementid = 2 的元素)。因此,计数是 每小时 2 个元素,providerid = 12。
如您所见,我真的在处理移动元素。因此,在那个时间范围内(1 小时),我将元素 1 放在 3 个不同的位置,将元素 2 放在一个位置。所以,共有 2 个元素,属于同一个提供者(providerid = 12)。
然后,我的结果集应该如下所示:
providerid start_time end_time num_elements
12 2014-10-01T00:00:00Z 2014-10-01T01:00:00Z 2
我希望每个提供商都一样。
我猜响应类似于this one、this one 或this one,但仍然没有找到解决方案。非常感谢任何帮助。
非常感谢!
【问题讨论】:
标签: sql postgresql aggregate-functions