Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
Seleccione el valor máximo en una combinación de varias tablas

Estoy tratando de obtener la fecha máxima de varias tablas cuando esas tablas tienen una geometría particular. Mis tablas se ven más o menos así (por supuesto, todas son diferentes, pero las acorté para que quede más claro):

Un tipo de tabla:

 Id, Info, Geometry, Date

Y finalmente tengo otra tabla que se ve así (acortada nuevamente):

tabla B:

 Id, Geometry

Ahora, lo que quiero hacer es unir todas mis tablas de tipo A en Geometría donde se cruzan con la geometría de la tabla B, y obtener la tabla A que tiene la fecha más reciente.

Actualmente tengo la siguiente solicitud que está funcionando:

 UPDATE last_updateT SET date_last_update= S.dateMax FROM (SELECT B.gid, MAX(A.last_date) AS dateMax FROM B JOIN A ON ST_Intersects(B.geometry, A.geometry) GROUP BY B.gid) S WHERE T.id = S.gid;

Ahora me gustaría poder hacer ese tipo de combinación en una tabla múltiple que se parece a la tabla A. He oído hablar de la función GREATEST pero no estoy seguro de cómo usarla. Además, uso Postgresql si eso hace alguna diferencia.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Parece que está buscando UNION ALL , por lo que puede tratar los datos de diferentes tablas como si fueran datos de una sola tabla:

 SELECT b.gid, MAX(x.last_date) AS dateMax FROM b JOIN ( SELECT geometry, last_date FROM a UNION ALL SELECT geometry, last_date FROM aa UNION ALL SELECT geometry, last_date FROM aaa ) x ON ST_Intersects(b.geometry, x.geometry) GROUP BY b.gid;
over 4 years ago · Santiago Trujillo Denunciar

0

A grandes rasgos, MAX es una función agregada, por lo que usa MAX para obtener el valor más alto de la misma columna en varias filas diferentes.

GREATEST es una función escalar, usa MAYOR para obtener el valor más alto de diferentes columnas en la misma fila.

p.ej:

 SELECT GREATEST(col1,col2,col3)

Mejor: https://www.postgresql.org/docs/9.5/static/functions-conditional.html

Máx.: https://www.postgresql.org/docs/9.5/static/functions-aggregate.html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda