2 votos

¿Cómo encontrar el valor máximo para el id que aparece en cualquier lugar de otra columna?

Espero que el título sea claro. Si no lo es, por favor cámbielo.

Tengo una tabla que se ve así:

introduzca aquí la descripción de la imagen

Me gustaría crear una consulta de selección, donde si el gid está en cualquier lugar de la columna ancestor, seleccionar el nivel máximo de estas filas. Por ejemplo: El gid 727 está cuatro veces en la columna ancestor. El nivel máximo de estas filas es 3, por lo que el valor en la nueva columna, digamos nivel_a, donde el gid es 727, será 3. Para el gid 725 lo mismo, pero para el gid 717 será 0.

Intenté usar unnest, join, subconsulta pero nada funcionó. He leído sobre join lateral pero no tengo idea de cómo podría usarlo.

Estoy usando PostgreSQL 10 con PostGIS 2.5.2

2voto

Anton8000 Puntos 165

Unnest está funcionando cuando intento:

select id, coalesce(sub.level,0) maxlevel
from sometable
left join (
    select distinct on (1) 
        unnest(ancestor) id2, level
    from sometable
    order by 1,2 DESC) sub
on sometable.id = sub.id2

insertar descripción de la imagen aquí

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X