21st Jul 2022 2 minutos de leitura Como selecionar a primeira fileira em um grupo? Agnieszka Kozubek-Krycuń postgresql sql Índice SELECT DISTINCT ON com ORDENAMENTO POR SELECIONE DISTINTO Muitas vezes você deseja selecionar uma única linha de cada grupo GROUP BY. O PostgreSQL tem uma declaração especialmente para isso: SELECIONE UMA FILA DISTINTA. Digamos que eu quero selecionar um boletim meteorológico para cada local. 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; A consulta recupera um boletim meteorológico para cada local. Você pode usar várias expressões na declaração 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, a consulta recupera um único relatório meteorológico para cada semana. SELECT DISTINCT ON com ORDENAMENTO POR O DISTINTO SELECT ON não decorado seleciona uma fila para cada grupo, mas você não sabe qual das filas será selecionada. Cada execução da consulta pode retornar filas diferentes. Use a cláusula ORDER BY se você quiser selecionar uma linha específica. SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC; A consulta recupera o boletim meteorológico mais recente para cada local. 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, a consulta seleciona os dados de backup mais recentes em cada semana. As expressões SELECT DISTINCT ON têm que ser repetidas no início da cláusula ORDER BY. Você pode adicionar expressões adicionais após elas. SELECIONE DISTINTO Uma cláusula relacionada é a cláusula padrão SELECT DISTINCT. A cláusula padrão elimina a duplicação de linhas. SELECT DISTINCT ON elimina filas duplicando as expressões dadas. Tags: postgresql sql