Comparaison de lignes dans PostgreSQL à l'aide des fonctions de fenêtre
Dans PostgreSQL, la comparaison de la ligne actuelle avec les lignes adjacentes peut être effectuée à l'aide des fonctions de fenêtre. Les fonctions de fenêtre vous permettent d'appliquer la logique et les calculs sur une plage de lignes, y compris les lignes précédentes et suivantes.
Exemple de comparaison de nombres impairs entre pairs
Pour récupérer des nombres impairs entre les nombres pairs d'un tableau, vous pouvez utiliser la requête suivante :
SELECT odd_num FROM ( SELECT num, LAG(num, 1) OVER (ORDER BY id) AS prev_num, LEAD(num, 1) OVER (ORDER BY id) AS next_num FROM table_name ) AS window WHERE (prev_num % 2 = 0) AND (next_num % 2 = 0) AND (num % 2 <> 0);
Fonction Fenêtre Avantages
Les fonctions de fenêtre offrent plusieurs avantages par rapport à l'exécution de plusieurs requêtes ou à l'utilisation de curseurs pour comparer les lignes :
Autres considérations
Lors de l'utilisation des fonctions de fenêtre, il est important de prendre en compte les facteurs suivants :
Version simplifiée pour un exemple de détection de nom
En appliquant les mêmes principes à l'exemple d'analyse de texte, la requête simplifiée suivante peut être utilisée :
SELECT text FROM ( SELECT text ,category ,LAG(category) OVER w AS previous_cat ,LEAD(category) OVER w AS next_cat FROM token t JOIN textBlockHasToken tb ON tb.tokenId = t.id WINDOW w AS (PARTITION BY textBlockId, sentence ORDER BY position) ) tokcat WHERE category <> 'NAME' AND previous_cat = 'NAME' AND next_cat = 'NAME';
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!