根据时间SQL减去值

时间:2017-09-25 18:21:02

标签: sql postgresql sum case

对于每次重复多次的EVENT_TYPE

enter image description here

我需要一个SQL语句,它返回event_type以及为此event_type注册的最后一个值的减法和第二个值。感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您可以使用LEAD()(或LAG(),如果您愿意)获取系列中的下一条记录,并仅在有另一条记录且仅采用最新{{1}时计算差异} Time

Event_Type

答案 1 :(得分:0)

我会使用row_number()和条件聚合:

select e.event_type,
       sum(case when seqnum = 1 then value when seqnum = 2 then - value end) as diff
from (select e.*,
             row_number() over (partition by e.event_type order by e.time desc) as seqnum
      from events e
     ) e
group by e.event_type
having count(*) >= 2;