A veces, es posible que necesite obtener la última fila de la tabla o la última fila por grupo en PostgreSQL. Aquí se explica cómo obtener el último registro por grupo en PostgreSQL.
Obtener la última fila de la tabla
Digamos que tiene la siguiente tabla de PostgreSQL.
postgres=#create table product_sales(product varchar(10), order_date date, sale int); postgres=#insert into product_sales(product, order_date, sale) values('A','2020-05-01 03:00:00',250), ('B','2020-05-01 05:30:00',350), ('C','2020-05-01 07:45:00',1250), ('A','2020-05-02 02:34:00',450), ('B','2020-05-02 01:24:00',650), ('C','2020-05-02 12:34:00',1050), ('A','2020-05-03 04:00:45',150), ('B','2020-05-03 05:45:00',250), ('C','2020-05-03 09:50:00',1850); postgres=# select * from product_sales; product | order_date | sale ---------+---------------------+------ A | 2020-05-01 03:00:00 | 250 B | 2020-05-01 05:30:00 | 350 C | 2020-05-01 07:45:00 | 1250 A | 2020-05-02 02:34:00 | 450 B | 2020-05-02 01:24:00 | 650 C | 2020-05-02 12:34:00 | 1050 A | 2020-05-03 04:00:45 | 150 B | 2020-05-03 05:45:00 | 250 C | 2020-05-03 09:50:00 | 1850
Lectura adicional:función de creación de PostgreSQL
Esta es la consulta para obtener la última fila de la tabla, según cómo se ordenen las filas. En el ejemplo anterior, dado que nuestros registros se agregan por marca de tiempo, seleccionamos la fila con la última marca de tiempo.
postgres=# select * from product_sales order by order_date desc limit 1; product | order_date | sale ---------+---------------------+------ C | 2020-05-03 09:50:00 | 1850
En la consulta anterior, ordenamos las filas en orden descendente de marca de tiempo y seleccionamos la primera fila usando la cláusula LIMIT.
Lectura adicional:esquema de creación de PostgreSQL
Obtener el último registro por grupo
Aquí está la consulta SQL para obtener la última fila por grupo, es decir, cada producto.
postgres=# select distinct on (product) product, order_date, sale from product_sales order by product, order_date desc; product | order_date | sale ---------+---------------------+------ A | 2020-05-03 04:00:45 | 150 B | 2020-05-03 05:45:00 | 250 C | 2020-05-03 09:50:00 | 1850
En la consulta anterior, primero ordenamos las filas por producto (ascendente) y order_date (descendiendo). Luego usamos la cláusula DISTINCT ON para seleccionar solo el registro superior por grupo, que no es más que el último registro por grupo.
Lectura adicional:Cómo crear un histograma en PostgreSQL
Con suerte, ahora puede obtener fácilmente la última fila por grupo en PostgreSQL.
Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!