小编C S*_*ith的帖子

同一列中日期的总和间隔

您如何最好地总结交错行之间同一列中一系列日期的差异?我有一个日期时间列,想计算行之间的差异。我想要秒的差异。这个问题不是关于如何获得 2 个时间戳之间的差异,而是更侧重于如何最有效地在同一个表的行之间进行计算。在我的情况下,每一行都有一个日期时间事件类型,它在逻辑上将两行链接在一起。

详细说明如何对开始和结束的事件类型进行分组。(Andriy M 的问题)开始和结束“应该”是连续的。如果开始没有后续结束,则应将其排除在总和之外。移动到下一个开始,看看它是否有结束。只有连续的开始 - 结束对应该添加到总秒数的总和中。

在 postgresql 9.x 中工作...

表中的示例数据;

eventtype, eventdate
START, 2015-01-01 14:00
END, 2015-01-01 14:25
START, 2015-01-01 14:30
END, 2015-01-01 14:43
START, 2015-01-01 14:45
END, 2015-01-01 14:49
START, 2015-01-01 14:52
END, 2015-01-01 14:55
Run Code Online (Sandbox Code Playgroud)

请注意,所有开始日期和结束日期都是连续的。

这是我的第一次尝试。似乎正在工作。

SELECT 
-- starts.*
SUM(EXTRACT(EPOCH FROM (eventdate_next - eventdate))) AS duration_seconds
FROM
( 
    WITH x AS (
        SELECT *, dense_rank() OVER (ORDER BY eventdate) AS rnk
        FROM   table
        AND eventdate > '2015-01-01 00:00:00.00'
        AND eventdate < '2016-01-01 23:59:59.59' 
        )
    SELECT …
Run Code Online (Sandbox Code Playgroud)

postgresql datetime sum

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

标签 统计

datetime ×1

postgresql ×1

sum ×1