Window Functions
PostgreSQL 🔴 SeniorDefinition
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.