【发布时间】:2011-07-15 15:59:13
【问题描述】:
SQL 语句是什么样的?
表格如下所示:
- id { 整数 }
- 姓名{ 字符不同}
-
timestamp { 时区时间戳}
id name timestamp ---+----------+-------------------------------- 1 one "2010-09-24 21:10:39.515+00" 2 two "2010-09-16 09:21:09.362+00" 3 three "2010-07-08 00:00:46.549+00"
编辑#1
这是一个更好的例子。 (在 Tometzky 的帮助下)所有结果都在 1 小时内。也就是说,对于每一行,给我 1 小时内的任何其他行:
select * from myTable order by t
id | t
----+-------------------------------
9 | 2011-07-15 18:20:20.05+02
10 | 2011-07-15 19:05:00.05+02
11 | 2011-07-15 19:40:20.05+02
13 | 2011-07-15 20:31:01.05+02
14 | 2011-07-15 20:35:11.05+02
(5 rows)
result of needed query:
id | matchid | origTime | matchTime
----+----------+----------------------------+------------------------------
9 | 10 | 2011-07-15 18:20:20.05+02 | 2011-07-15 19:05:00.05+02
10 | 9 | 2011-07-15 19:05:00.05+02 | 2011-07-15 18:20:20.05+02
10 | 11 | 2011-07-15 19:05:00.05+02 | 2011-07-15 19:40:20.05+02
11 | 10 | 2011-07-15 19:40:20.05+02 | 2011-07-15 19:05:00.05+02
11 | 13 | 2011-07-15 19:40:20.05+02 | 2011-07-15 20:31:01.05+02
11 | 14 | 2011-07-15 19:40:20.05+02 | 2011-07-15 20:35:11.05+02
13 | 11 | 2011-07-15 20:31:01.05+02 | 2011-07-15 19:40:20.05+02
13 | 14 | 2011-07-15 20:31:01.05+02 | 2011-07-15 20:35:11.05+02
14 | 11 | 2011-07-15 20:35:11.05+02 | 2011-07-15 19:40:20.05+02
14 | 13 | 2011-07-15 20:35:11.05+02 | 2011-07-15 20:31:01.05+02
(10 rows)
【问题讨论】:
-
一小时之内?如:13:00、13:59 和 14:35 是否属于同一组?
-
Postgres 的哪个版本?从 8.4 开始,Postgres 具有窗口功能,这将有助于此处。
-
@OMG :因此对于第 2 行,8:21:09 和 10:21:09 之间的任何内容都将匹配。
标签: sql postgresql