Comparer des lignes dans PostgreSQL à l'aide des fonctions de fenêtre
Récupérer des données d'une base de données tout en comparant la ligne actuelle avec ses lignes adjacentes peut être une utilisation précieuse cas. Dans PostgreSQL, les fonctions de fenêtre fournissent une solution puissante pour cette tâche.
L'une de ces techniques consiste à utiliser les fonctions lag et lead. lag récupère une valeur de la ligne précédente, tandis que lead récupère une valeur de la ligne suivante, en fonction d'un décalage spécifié.
Exemple :
Supposons que vous ayez une table avec deux colonnes : position et chiffres. Vous souhaitez sélectionner les nombres impairs entre les nombres pairs. À l'aide des fonctions de fenêtre, vous pouvez y parvenir avec la requête suivante :
SELECT numbers FROM ( SELECT numbers, lag(numbers,1) OVER w AS previous_number, lead(numbers,1) OVER w AS next_number FROM table WINDOW w AS (PARTITION BY position ORDER BY position) ) subquery WHERE previous_number % 2 = 0 AND next_number % 2 = 0 AND numbers % 2 = 1;
Les fonctions de fenêtre offrent plusieurs avantages :
Considérations supplémentaires :
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!