小编ber*_*rdt的帖子

获取两个相关行之间的时间增量

我有一个表,里面有很多成对的条目,通过一个字段name相互关联,每个条目都有一个时间戳timestamp_received。我想获得每个时间戳的增量name

桌子:

|id|name|timestamp_received|
|1|A|2016-09-21 11:11:00|
|2|A|2016-09-21 11:11:10|
|3|B|2016-09-21 11:11:20|
|4|B|2016-09-21 12:12:21|
Run Code Online (Sandbox Code Playgroud)

所需的输出:

|name|delta|
|A|00:00:10|
|B|01:01:01|
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

SELECT name, timestamp_received - LAG(timestamp_received, 1) OVER (PARTITION BY name ORDER BY id ASC) delta
FROM message;
Run Code Online (Sandbox Code Playgroud)

哪个不会产生预期的输出

SELECT fpm_left.name, age(fpm_right.timestamp_received, fpm_left.timestamp_received) 
FROM
  (SELECT * FROM message WHERE id IN (SELECT min(id) AS id FROM message GROUP BY name)) fpm_left
JOIN (SELECT * FROM message WHERE IN in (SELECT max(id) AS id FROM message GROUP BY name)) fpm_right
    ON …
Run Code Online (Sandbox Code Playgroud)

postgresql

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

标签 统计

postgresql ×1