Hi Andreas, Anton,

I did some test and both queries didn't worked. Maybe I was not clear with
the example provided.
My table contains more than 160K records with SIDE 0, 1, -1, 2, -2, 3 and
-3.
Example provided is a very small subset.

*Andrea's *query is failing because it is getting only distinct SIDEs. The
query returns just 14 rows.

*Anton's *one because it is joining on distance so merges records without a
relation (I have many rows with a distance of 0 for example). I need to
have a join on IDs instead

Thanks

- Antonio


On 28 December 2012 13:00, Andreas Kretschmer <andr...@a-kretschmer.de>wrote:

> >
> > so the result should be:
> > LABEL    ID                  Distance                 SIDE
> > "15";     119006;      0.10975569030617;        1
> > "19";     64056;        0.41205442839764;        1
> > "14";     64054;        0.118448307450912;      0
> > "24";     119007;      0.59758734628752;        0
> >
> >
>
>
>
> test=*# select * from foo;
>  label |   id   |     distance      | side
> -------+--------+-------------------+------
>     15 | 119006 |  0.10975569030617 |    1
>     14 |  64054 | 0.118448307450912 |    0
>     16 |  64055 | 0.176240407317772 |    0
>     20 |  64057 |  0.39363711745035 |    0
>     19 |  64056 |  0.41205442839764 |    1
>     24 | 119007 |  0.59758734628752 |    0
> (6 rows)
>
> test=*# select * from (select distinct on (side) label, id, distance, side
> from
> foo order by side, distance) a union all (select distinct on (side) label,
> id,
> distance, side from foo order by side, distance desc) order by side desc,
> label;
>  label |   id   |     distance      | side
> -------+--------+-------------------+------
>     15 | 119006 |  0.10975569030617 |    1
>     19 |  64056 |  0.41205442839764 |    1
>     14 |  64054 | 0.118448307450912 |    0
>     24 | 119007 |  0.59758734628752 |    0
> (4 rows)
>
>
> HTH, Andreas
>

Reply via email to