Maison > base de données > tutoriel mysql > Comment extraire la dernière ligne de chaque ID dans PostgreSQL ?

Comment extraire la dernière ligne de chaque ID dans PostgreSQL ?

Patricia Arquette
Libérer: 2024-12-28 15:02:11
original
652 Les gens l'ont consulté

How to Extract the Last Row for Each ID in 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;
Copier après la connexion

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;
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal