Just a small correction: there should be time::text>>>'prev_time' for the
calculations to be correct:


select *
  from (
     select (((case when time::text = <<<'prev_time' then *0* else *1*
end)+(<<<'dense_rank')::int4)::text>>>'dense_rank')::int4 as position,
runnerid, time, time::text>>>'prev_time'
       from big_marathon
      order by time
  ) results
 where position=*2*

-- meter_readings
select '' >>> 'lag';

select date, reading::numeric-(case lag when '' then null else lag
end)::numeric as used
  from (
    select date, <<<'lag' as lag, reading::text >>>'lag' as reading
      from meter_readings
     order by date
  ) as t
 order by used asc nulls last limit *1*


Best regards,
Vladimir Sitnikov

Reply via email to