gpt4 book ai didi

postgresql - LAG 函数和 GROUP BY

转载 作者:行者123 更新时间:2023-11-29 11:08:57 25 4
gpt4 key购买 nike

我有一张这样的 table ,

 event_id |          date          
----------+------------------------
1703702 | 2013-06-25 07:50:57-04
3197588 | 2013-06-25 07:51:57-04
60894420 | 2013-06-25 07:52:57-04
60894420 | 2013-06-25 07:53:57-04
183503 | 2013-06-25 07:54:57-04
63116743 | 2013-06-25 07:55:57-04
63110451 | 2013-06-25 07:56:57-04
63116743 | 2013-06-25 07:57:57-04
63116743 | 2013-06-25 07:58:57-04

我想应用滞后函数和分组依据,这样我就可以找到任何特定 event_id 之间的时间间隔。

我想要这样的东西:

SELECT event_id, difference
FROM (
SELECT event_id, date - lag(date) over (order by date) as
difference FROM table GROUP BY event_id
) t;

但是,我不能将 GROUP BY 与 LAG 函数一起使用。我想要类似于以下内容的结果:

63116743, {120, 60}
60894420, {60}
...
...

所以第一个 id 的事件之间有一个 120s 和 60s 的窗口,第二个 id 有一个 60s 的窗口。

有没有办法做到这一点?输出格式不是太重要,只要我最后能把它放到一个数组中即可。我正在使用 Postgres 9.1

最佳答案

WITH diffs as (
SELECT
event_id,
date - lag(date) over (partition BY event_id ORDER BY date) as difference
FROM
TABLE
)
SELECT
event_id,
array_agg( difference ) as all_diffs
FROM
diffs
GROUP BY event_id;

应该可以。

关于postgresql - LAG 函数和 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17301816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com