Fonctions de fenêtrage (window functions)#
avancé
Utiles pour les classements et les comparaisons ligne à ligne, mais rarement nécessaires dans une application courante : vérifier d'abord qu'un GROUP BY ne suffit pas.
Syntaxe#
fonction(...) OVER (
[PARTITION BY colonnes]
[ORDER BY colonnes]
[ROWS|RANGE BETWEEN debut AND fin]
)
Fonctions disponibles#
| Fonction | Description |
|---|---|
ROW_NUMBER() |
Numéro de ligne dans la partition |
RANK() |
Rang (avec trous en cas d'égalité) |
DENSE_RANK() |
Rang (sans trous) |
NTILE(n) |
Répartit en n groupes |
LAG(x [, n [, defaut]]) |
Valeur n lignes avant |
LEAD(x [, n [, defaut]]) |
Valeur n lignes après |
FIRST_VALUE(x) / LAST_VALUE(x) |
Première/dernière valeur de la fenêtre |
SUM/AVG/COUNT/MIN/MAX(x) OVER (...) |
Agrégats en fenêtrage |
Exemples#
SELECT nom, age,
RANK() OVER (ORDER BY age DESC) AS rang
FROM etudiants;
SELECT nom, ville,
ROW_NUMBER() OVER (PARTITION BY ville ORDER BY nom) AS num
FROM etudiants;
SELECT nom, age,
age - LAG(age) OVER (ORDER BY id) AS diff_precedent
FROM etudiants;
Nommer une fenêtre (clause WINDOW) avancé#
SQLite
Fonctions de fenêtrage disponibles depuis SQLite 3.25 (2018).