Window Functions

PostgreSQL 🔴 Senior

Définition

Fonctions qui opèrent sur un ensemble de lignes (fenêtre) lie a la ligne courante sans réduire le nombre de résultats. Incluent ROW_NUMBER, RANK, LAG, LEAD, SUM OVER, etc.

Analogie

Un coureur qui voit son classement en temps réel pendant la course, sans que la course s'arrête.

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 précédenté/suivante.

Anti-pattern

Utiliser des sous-requêtes corrélées pour simuler des window functions, beaucoup plus lent.

Termes liés

#sgbd#interview#database#postgresql

← → au clavier pour passer d'une fiche à l'autre