我有一个表,里面有很多成对的条目,通过一个字段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