Extraction de la dernière ligne pour chaque ID dans PostgreSQL
Considérons un ensemble de données avec des colonnes nommées ID, Date, et Another_info. L'objectif est d'extraire les dernières informations (ligne) pour chaque ID unique.
pour y parvenir dans PostgreSQL, deux méthodes sont couramment utilisées:
distinctes sur l'opérateur
postgresql fournit l'opérateur distinct, qui vous permet de spécifier que les valeurs distinctes de l'opérateur. 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 ID unique est renvoyée, commandée dans l'ordre descendant par date. Une fonction de fenêtre vous permet d'effectuer des calculs ou des agrégations sur un ensemble de lignes partitionnées. Dans ce cas, la requête suivante peut être utilisée:
sélectionner id, date, un autre_info depuis ( Sélectionnez ID, date, autre_info, row_number () over (partition by id ordonnance by date dec) comme rn du_table ) t où rn = 1 Ordre par id; Cette requête utilise la fonction row_number () pour attribuer un numéro séquentiel à chaque ligne de chaque partition d'ID. 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 pour chaque ID).
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3