Lists: | ecpug |
---|
From: | Tonny <tonny(dot)lists(at)gmail(dot)com> |
---|---|
To: | ecpug(at)postgresql(dot)org |
Subject: | DISTINCT ON con columna hstore |
Date: | 2013-01-21 21:42:57 |
Message-ID: | 50FDB661.2090104@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | ecpug |
SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2,
columna3 FROM tabla1;
Hola a todos.
Como puedo hacer un distinct ON, solo de un atributo de un campo hstore
gracias
From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Tonny <tonny(dot)lists(at)gmail(dot)com> |
Cc: | Foros Postgre Ecuador <ecpug(at)postgresql(dot)org> |
Subject: | Re: DISTINCT ON con columna hstore |
Date: | 2013-01-21 22:18:13 |
Message-ID: | CAJKUy5jWzfK8-Q20nPzMbWQ=c0x12fXO8beDXurVVG3AW1CHrw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | ecpug |
2013/1/21 Tonny <tonny(dot)lists(at)gmail(dot)com>:
> SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2, columna3
> FROM tabla1;
>
> Hola a todos.
> Como puedo hacer un distinct ON, solo de un atributo de un campo hstore
>
mmm... interesante, parece que en ese caso debes filtrar los valores nulos
SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2, columna3
FROM tabla1
WHERE (tags->'name') IS NOT NULL;
En realidad tiene sentido, tags->'name' devuelve nulo si en el hstore
no esta el campo 'name' y como siempre se cumple que NULL <> NULL el
opina que la expresión es distinta en cada registro y lo muestra.
--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566 Cell: +593 987171157
From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Foros Postgre Ecuador <ecpug(at)postgresql(dot)org> |
Subject: | Fwd: DISTINCT ON con columna hstore |
Date: | 2013-05-17 23:36:39 |
Message-ID: | CAJKUy5hASgb09FL2Y6oDsohztoZ8F3CFeomzKPhABFucZo-AFg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | ecpug |
Saludos,
Acabo de notar que Tonny no envio su resolución al foro, lo que
significa que nadie se beneficio de su solución... mal Tonny, muy
mal...
---------- Forwarded message ----------
From: Tonny <tonny(dot)lists(at)gmail(dot)com>
Date: 2013/1/24
Subject: Re: [ecpug] DISTINCT ON con columna hstore
To: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
On 01/21/2013 05:18 PM, Jaime Casanova wrote:
>
> 2013/1/21 Tonny <tonny(dot)lists(at)gmail(dot)com>:
>>
>> SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2, columna3
>> FROM tabla1;
>>
>> Hola a todos.
>> Como puedo hacer un distinct ON, solo de un atributo de un campo hstore
>>
> mmm... interesante, parece que en ese caso debes filtrar los valores nulos
>
> SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2, columna3
> FROM tabla1
> WHERE (tags->'name') IS NOT NULL;
>
>
> En realidad tiene sentido, tags->'name' devuelve nulo si en el hstore
> no esta el campo 'name' y como siempre se cumple que NULL <> NULL el
> opina que la expresión es distinta en cada registro y lo muestra.
>
> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte 24x7 y capacitación
> Phone: +593 4 5107566 Cell: +593 987171157
Lo solucioné así no sé como mejorar mas esa consulta :) o ponerla mas clara.
SELECT DISTINCT ON (nombre) nombre, distancia FROM
(
SELECT tags->'name' AS nombre, st_distance(linestring,
ST_GeomFromText('POINT(-78.10563426666833 0.3187742717967793)',4326))
* 111177.473352 as distancia
FROM osm.ways
WHERE exist(tags, 'name') AND exist(tags, 'highway')
ORDER BY distancia
) AS t1
WHERE distancia < 200
--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566 Cell: +593 987171157
From: | Jaime Casanova <jaime(at)2ndquadrant(dot)com> |
---|---|
To: | Foros Postgre Ecuador <ecpug(at)postgresql(dot)org> |
Subject: | Re: DISTINCT ON con columna hstore |
Date: | 2013-05-17 23:38:57 |
Message-ID: | CAJKUy5hHLH8-eR4Q8xLe5-p68MPoghr=geYrd=TaKStGvL+c2A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | ecpug |
> ---------- Forwarded message ----------
> From: Tonny <tonny(dot)lists(at)gmail(dot)com>
> Date: 2013/1/24
> Subject: Re: [ecpug] DISTINCT ON con columna hstore
> To: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
>
> Lo solucioné así no sé como mejorar mas esa consulta :) o ponerla mas clara.
>
> SELECT DISTINCT ON (nombre) nombre, distancia FROM
> (
> SELECT tags->'name' AS nombre, st_distance(linestring,
> ST_GeomFromText('POINT(-78.10563426666833 0.3187742717967793)',4326))
> * 111177.473352 as distancia
> FROM osm.ways
> WHERE exist(tags, 'name') AND exist(tags, 'highway')
> ORDER BY distancia
> ) AS t1
> WHERE distancia < 200
>
>
Y ya que estamos en eso, puedes usar la función st_dwithin() para solo
obtener los puntos que se encuentran dentro de 200m... y esa función
puede aprovechar los índices.
http://postgis.org/docs/ST_DWithin.html
--
Jaime Casanova www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566 Cell: +593 987171157
From: | Tonny <tonny(dot)lists(at)gmail(dot)com> |
---|---|
To: | ecpug(at)postgresql(dot)org |
Subject: | Re: Fwd: DISTINCT ON con columna hstore |
Date: | 2013-05-20 04:01:29 |
Message-ID: | 5199A019.3040709@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | ecpug |
On 05/17/2013 06:36 PM, Jaime Casanova wrote:
> Saludos,
>
> Acabo de notar que Tonny no envio su resolución al foro, lo que
> significa que nadie se beneficio de su solución... mal Tonny, muy
> mal...
>
>
> ---------- Forwarded message ----------
> From: Tonny <tonny(dot)lists(at)gmail(dot)com>
> Date: 2013/1/24
> Subject: Re: [ecpug] DISTINCT ON con columna hstore
> To: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
>
>
> On 01/21/2013 05:18 PM, Jaime Casanova wrote:
>> 2013/1/21 Tonny <tonny(dot)lists(at)gmail(dot)com>:
>>> SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2, columna3
>>> FROM tabla1;
>>>
>>> Hola a todos.
>>> Como puedo hacer un distinct ON, solo de un atributo de un campo hstore
>>>
>> mmm... interesante, parece que en ese caso debes filtrar los valores nulos
>>
>> SELECT DISTINCT ON (tags->'name') tags->'name' AS nombre, columna2, columna3
>> FROM tabla1
>> WHERE (tags->'name') IS NOT NULL;
>>
>>
>> En realidad tiene sentido, tags->'name' devuelve nulo si en el hstore
>> no esta el campo 'name' y como siempre se cumple que NULL <> NULL el
>> opina que la expresión es distinta en cada registro y lo muestra.
>>
>> --
>> Jaime Casanova www.2ndQuadrant.com
>> Professional PostgreSQL: Soporte 24x7 y capacitación
>> Phone: +593 4 5107566 Cell: +593 987171157
>
> Lo solucioné así no sé como mejorar mas esa consulta :) o ponerla mas clara.
>
> SELECT DISTINCT ON (nombre) nombre, distancia FROM
> (
> SELECT tags->'name' AS nombre, st_distance(linestring,
> ST_GeomFromText('POINT(-78.10563426666833 0.3187742717967793)',4326))
> * 111177.473352 as distancia
> FROM osm.ways
> WHERE exist(tags, 'name') AND exist(tags, 'highway')
> ORDER BY distancia
> ) AS t1
> WHERE distancia < 200
>
>
> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte 24x7 y capacitación
> Phone: +593 4 5107566 Cell: +593 987171157
>
>
La culpa la tiene la lista que al responder pone al remitente jeje,
tendré cuidado en poner en thunderbird responder a la lista