Maison >base de données >tutoriel mysql >Comment extraire la dernière ligne de chaque ID dans PostgreSQL ?
Extraction de la dernière ligne pour chaque identifiant dans Postgresql
Considérez un ensemble de données avec des colonnes nommées id, date et another_info. L'objectif est d'extraire la dernière information (ligne) pour chaque identifiant unique.
Pour y parvenir dans Postgresql, deux méthodes sont couramment utilisées :
Distinct On Operator
Postgresql fournit l'opérateur distinct on, qui vous permet de spécifier que seules les valeurs distinctes d'une ou plusieurs colonnes particulières soient renvoyées. Dans ce cas, l'opérateur peut être utilisé comme suit :
select distinct on (id) id, date, another_info from the_table order by id, date desc;
Cette requête garantit que seule la dernière instance de chaque identifiant unique est renvoyée, classée par ordre décroissant par date.
Fonctions de fenêtre
Vous pouvez également utiliser les fonctions de fenêtre pour obtenir le même résultat. Une fonction de fenêtre permet d'effectuer des calculs ou des agrégations sur un ensemble de lignes partitionné. Dans ce cas, la requête suivante peut être utilisée :
select id, date, another_info from ( select id, date, another_info, row_number() over (partition by id order by date desc) as rn from the_table ) t where rn = 1 order by id;
Cette requête utilise la fonction row_number() pour attribuer un numéro séquentiel à chaque ligne dans chaque partition d'identifiant. La clause Where filtre les résultats pour inclure uniquement les lignes avec la valeur rn la plus élevée (c'est-à-dire la dernière ligne de chaque identifiant).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!