Re: Compare rows - Mailing list pgsql-novice

From Thom Brown
Subject Re: Compare rows
Date
Msg-id CAA-aLv5naEwXz6m9GqrUL32z+D7VGGjpUthiVCex3oyMTFLxDQ@mail.gmail.com
Whole thread Raw
In response to Compare rows  (LALIT KUMAR <lalit.jss@gmail.com>)
List pgsql-novice
On 13 July 2011 07:15, LALIT KUMAR <lalit.jss@gmail.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

pgsql-novice by date:

Previous
From: "Oliveiros d'Azevedo Cristina"
Date:
Subject: Re: Compare rows
Next
From: dev ss
Date:
Subject: Datetime stored in bigint