Re: Compare rows

From: Thom Brown <thom(at)linux(dot)com>
To: LALIT KUMAR <lalit(dot)jss(at)gmail(dot)com>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: Compare rows
Date: 2011-07-13 10:00:05
Message-ID: CAA-aLv5naEwXz6m9GqrUL32z+D7VGGjpUthiVCex3oyMTFLxDQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

On 13 July 2011 07:15, LALIT KUMAR <lalit(dot)jss(at)gmail(dot)com> wrote:
> Hi,
> I have the following table.
> city    Rate         flag
> A         10             0
> A         20             1
> A         30              0
> A          2              0
> A         23              1
> A        12               0
> B          5               1
> B          43              0
> C         23                1
> C        67                 1
> For every city I have so set the  flag as -1 in row which is 0 above the row
> having flag as 1.
> So my out would be:
> city    Rate         flag
> A         10             -1
> A         20             1
> A         30              0
> A          2              -1
> A         23              1   (not changed to -1 as it not 0)
> A        12               0  (not changed to -1 because i need to compare
>  it to row of same city. so being last row not compared with any row)
> ----------------------------------------------------
> B          5               1
> B          43
> C         23                1
> C        67                 1

You could try this:

UPDATE
my_table
SET
flag = -1
FROM (
SELECT
city, dat, lead(flag, 1, 0) OVER (PARTITION BY city ORDER BY
dat) AS next_flag
FROM
my_table
) t2
WHERE
my_table.city = t2.city
AND
my_table.dat = t2.dat
AND
flag = 0
AND
next_flag = 1

This joins the target table with a subquery that uses a window
function to work out what the next value of the date column is, and
updates based on that.

--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message dev ss 2011-07-15 19:58:09 Datetime stored in bigint
Previous Message Oliveiros d'Azevedo Cristina 2011-07-13 09:50:34 Re: Compare rows