Window Functions

PostgreSQL 🔴 Senior

Definition

Fonctions qui operent sur un ensemble de lignes (fenetre) lie a la ligne courante sans reduire le nombre de resultats. Incluent ROW_NUMBER, RANK, LAG, LEAD, SUM OVER, etc.

Analogie

Un coureur qui voit son classement en temps reel pendant la course, sans que la course s'arrete.

Exemple de code

SELECT name, salary,
  RANK() OVER (ORDER BY salary DESC) as rank,
  salary - LAG(salary) OVER (ORDER BY salary DESC)
    as diff_with_prev
FROM employees;

Cas d'usage

Calculer des classements, des moyennes mobiles ou comparer chaque ligne avec la precedente/suivante.

Anti-pattern

Utiliser des sous-requetes correlees pour simuler des window functions, beaucoup plus lent.

Termes lies

#sgbd#interview#database#postgresql