首页 > 解决方案 > 需要帮助计算与特定条件匹配的列中的值之间的差异

问题描述

我有一个包含以下列的表格:

我需要为 articletype = "OUT" 和 action = "CREATE_ARTICLE" 的每一行计算其时间戳值与 articletype = "IN" 和 action = "CREATE_ARTICLE" 的行的前一个时间戳值之间的差异票证编号。

所以我需要知道从我收到消息(articletype =“IN”)到我发送回复(articletype =“OUT”)的时间,每张票经过了多少时间。动作 = “CREATE_ARTICLE”。应该计算两个连续时间戳之间的差异。

谢谢!

桌子

标签: sqlpostgresqlpsql

解决方案


使用max()带有过滤器的窗口articletype = 'IN'

select *, 
       case
         when articletype = 'OUT' 
           then timestamp 
             - max(timestamp) filter (where articletype = 'IN')
                 over (partition by ticketid
                           order by timestamp)
         else null
       end
  from table1
 where action = 'ARTICLE_CREATE'
   and articletype in ('IN', 'OUT');

窗口的默认未指定记录范围是rows between unbounded preceding and current row.

处理相关数据。


推荐阅读