21st Jul 2022 Lectura de 2 minutos ¿Cómo seleccionar la primera fila de un grupo? Agnieszka Kozubek-Krycuń PostgreSQL SQL Índice SELECT DISTINCT ON con ORDER BY SELECT DISTINCT A menudo se quiere seleccionar una sola fila de cada grupo GROUP BY. PostgreSQL tiene una sentencia especialmente para eso: SELECT DISTINCT ON. Digamos que quiero seleccionar un informe meteorológico para cada localidad. location time report Ottawa 2014-05-15 8:00 sunny 2014-05-15 11:00 cloudy 2014-05-15 15:00 rainy Warsaw 2014-05-15 8:00 overcast 2014-05-15 11:00 sunny 2014-05-15 15:00 rainy SELECT DISTINCT ON (location) location, time, report FROM weather_reports; La consulta recupera un informe meteorológico para cada localidad. Puede utilizar varias expresiones en la sentencia SELECT DISTINCT ON. SELECT DISTINCT ON (creation_date_week, resource_id) id, creation_date, date_trunc('week', creation_date) creation_date_week, resource_id FROM backup_data; Para cada recurso, la consulta recupera un solo dato de respaldo para cada semana. SELECT DISTINCT ON con ORDER BY La sentencia SELECT DISTINCT ON sin ordenar selecciona una fila para cada grupo, pero no se sabe cuál de las filas se seleccionará. Cada ejecución de la consulta puede devolver filas diferentes. Utilice la cláusula ORDER BY si desea seleccionar una fila específica. SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC; La consulta recupera el informe meteorológico más reciente de cada localidad. SELECT DISTINCT ON (creation_date_week, resource_id) id, creation_date, date_trunc('week', creation_date) creation_date_week, resource_id FROM backup_data ORDER BY creation_date_week, resource_id, creation_date DESC; Para cada recurso, la consulta selecciona los datos más recientes de las copias de seguridad de cada semana. Las expresiones SELECT DISTINCT ON deben repetirse al principio de la cláusula ORDER BY. Puede añadir expresiones adicionales después de ellas. SELECT DISTINCT Una cláusula relacionada es la cláusula SELECT DISTINCT estándar. La cláusula estándar elimina las filas duplicadas. SELECT DISTINCT ON elimina las filas que duplican las expresiones dadas. Tags: PostgreSQL SQL