varios valor una ultimo sumar seleccionar resultados registros registro promedio por obtener mayor maximo fecha contar consulta con campos campo agrupados sql postgresql greatest-n-per-group

valor - sql seleccionar registro mayor fecha



Postgresql extraer la Ășltima fila para cada ID (3)

Supongamos que tengo los datos siguientes

id date another_info 1 2014-02-01 kjkj 1 2014-03-11 ajskj 1 2014-05-13 kgfd 2 2014-02-01 SADA 3 2014-02-01 sfdg 3 2014-06-12 fdsA

Quiero para cada ID la última información:

id date another_info 1 2014-05-13 kgfd 2 2014-02-01 SADA 3 2014-06-12 fdsA

¿Cómo podría manejar eso?


Agrupe por id y use cualquier función agregada para cumplir con los criterios del último registro. Por ejemplo

select id, max(date), another_info from the_table group by id, another_info


La forma más eficiente es usar distinct on operador de Postgres distinct on operador.

select distinct on (id) id, date, another_info from the_table order by id, date desc;

Si desea una solución que funcione en todas las bases de datos (pero que sea menos eficiente) puede usar una función de ventana:

select id, date, another_info from ( select id, date, another_info, row_number() over (partition by id order by date desc) as rn from the_table ) t where rn = 1 order by id;

La solución con una función de ventana en la mayoría de los casos es más rápida que usar una subconsulta.


select * from bar where (id,date) in (select id,max(date) from bar group by id)

Probado en PostgreSQL, MySQL