4th Jul 2022 2 minutes de lecture Comment sélectionner la première ligne d'un groupe ? Agnieszka Kozubek-Krycuń postgresql sql Table des matières SELECT DISTINCT ON avec ORDER BY SELECT DISTINCT Souvent, vous souhaitez sélectionner une seule ligne dans chaque groupe GROUP BY. PostgreSQL dispose d'une instruction spécialement conçue pour cela : SELECT DISTINCT ON. Disons que je veux sélectionner un bulletin météo pour chaque lieu. 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 requête récupère un bulletin météo pour chaque lieu. Vous pouvez utiliser plusieurs expressions dans l'instruction 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; Pour chaque ressource, la requête récupère une seule donnée de sauvegarde pour chaque semaine. SELECT DISTINCT ON avec ORDER BY L'instruction SELECT DISTINCT ON sans ordre sélectionne une ligne pour chaque groupe, mais vous ne savez pas laquelle des lignes sera sélectionnée. Chaque exécution de la requête peut renvoyer des lignes différentes. Utilisez la clause ORDER BY si vous souhaitez sélectionner une ligne spécifique. SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC; La requête récupère le rapport météo le plus récent pour chaque lieu. 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; Pour chaque ressource, la requête sélectionne les données de sauvegarde les plus récentes de chaque semaine. Les expressions SELECT DISTINCT ON doivent être répétées au début de la clause ORDER BY. Vous pouvez ajouter des expressions supplémentaires après elles. SELECT DISTINCT Une clause apparentée est la clause standard SELECT DISTINCT. La clause standard élimine les lignes en double. SELECT DISTINCT ON élimine les lignes en double des expressions données. Tags: postgresql sql