21st Jul 2022 Tempo di lettura: 2 minuti Come selezionare la prima riga di un gruppo? Agnieszka Kozubek-Krycuń PostgreSQL SQL Indice SELECT DISTINCT ON con ORDER BY SELEZIONARE DISTINTO Spesso si desidera selezionare una singola riga da ciascun gruppo GROUP BY. PostgreSQL ha un'istruzione specifica per questo: SELECT DISTINCT ON. Supponiamo di voler selezionare un bollettino meteo per ogni località. 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 query recupera un bollettino meteo per ogni località. È possibile utilizzare diverse espressioni nell'istruzione 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; Per ogni risorsa la query recupera un singolo dato di backup per ogni settimana. SELECT DISTINCT ON con ORDER BY L'istruzione SELECT DISTINCT ON non decorata seleziona una riga per ogni gruppo, ma non si sa quale delle righe sarà selezionata. Ogni esecuzione della query può restituire righe diverse. Utilizzare la clausola ORDER BY se si desidera selezionare una riga specifica. SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC; La query recupera il bollettino meteo più recente per ogni località. 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; Per ogni risorsa, la query seleziona i dati di backup più recenti di ogni settimana. Le espressioni SELECT DISTINCT ON devono essere ripetute all'inizio della clausola ORDER BY. È possibile aggiungere altre espressioni dopo di esse. SELEZIONARE DISTINTO Una clausola correlata è la clausola standard SELECT DISTINCT. La clausola standard elimina le righe duplicate. SELECT DISTINCT ON elimina le righe che duplicano le espressioni date. Tags: PostgreSQL SQL