SQL查询以在表上迭代以计算在其字段中具有相同值的第一条和第二条记录之间的时间差?

SQL查询以在表上迭代以计算在其字段中具有相同值的第一条和第二条记录之间的时间差?,sql,postgresql,Sql,Postgresql,我有一个postgresql表,用于存储在线论坛的帖子。每个帖子都属于一个线程。我想计算启动一个线程的帖子获得第一个响应所需的时间,有时一个线程从来没有得到响应,所以必须考虑到这一点 posts表包含以下字段: post_id, post_timestamp, thread_id 每个线程id可以有一个或多个帖子。例如,此查询返回id为1234的线程的第一个和第二个帖子: select * from posts where thread_id = 1234 order by post_time

我有一个postgresql表,用于存储在线论坛的帖子。每个帖子都属于一个线程。我想计算启动一个线程的帖子获得第一个响应所需的时间,有时一个线程从来没有得到响应,所以必须考虑到这一点

posts表包含以下字段:

post_id, post_timestamp, thread_id
每个线程id可以有一个或多个帖子。例如,此查询返回id为1234的线程的第一个和第二个帖子:

select * from posts where thread_id = 1234 order by post_timestamp limit 2
我想计算第一次和第二次post之间的时间差,并将其存储在具有以下字段的单独表格中:

thread_id, seconds_between_1s_and_2nd
,或在PostgreSQL 8.4+中:

要以秒表示,请使用从AGEtime1到time2的EXTRACTepoch

,或在PostgreSQL 8.4+中:


要以秒表示,请使用EXTRACTepoch FROM AGEtime1,time2

nice,现在,如何将时差转换为秒?我在谷歌上搜索了一下,似乎我可以从SelectPost\u时间戳中选择extractepoch,其中线程id=t.id按post\u时间戳顺序限制1偏移量1-从线程id=t.id按顺序的post中选择post\u时间戳post_时间戳限制1从线程t偏移0,现在,如何将时间差转换为秒?我在谷歌上搜索了一下,似乎我可以从SelectPost\u时间戳中选择extractepoch,其中线程id=t.id按post\u时间戳顺序限制1偏移量1-从线程id=t.id按顺序的post中选择post\u时间戳post_时间戳限制1从线程t偏移0
SELECT  (
        SELECT  post_timestamp
        FROM    posts
        WHERE   thread_id = t.id
        ORDER BY
                post_timestamp
        LIMIT 1 OFFSET 1
        ) - 
        (
        SELECT  post_timestamp
        FROM    posts
        WHERE   thread_id = t.id
        ORDER BY
                post_timestamp
        LIMIT 1 OFFSET 0
        )
FROM    threads t
SELECT  (
        SELECT  post_timestamp - LAG(post_timestamp) OVER (ORDER BY post_timestamp)
        FROM    posts
        WHERE   thread_id = t.id
        ORDER BY
                post_timestamp
        LIMIT 1 OFFSET 1
        )
FROM    threads t