LAST_VALUE |
Dernière valeur |
| Oracle Database SQL |
Oracle Database 9i ou supérieure |
Syntaxe
|
LAST_VALUE { (expr) [ { RESPECT | IGNORE } NULLS ] | (expr [ { RESPECT | IGNORE } NULLS ]) OVER (analytic_clause)
|
Paramètres
| Nom |
Description |
| expr |
Ce paramètre permet de spécifier l'expression ou la colonne dont on souhaite obtenir la dernière valeur dans la fenêtre définie. |
| RESPECT NULLS |
Ce paramètre permet de prendre en compte les valeurs NULL dans le calcul de la dernière valeur, même si la dernière valeur réelle est NULL. |
| IGNORE NULLS |
Ce paramètre permet d'ignorer les valeurs NULL dans la recherche de la dernière valeur, ce qui peut être utile pour obtenir la dernière valeur significative. |
| OVER |
Ce paramètre permet d'indiquer que la fonction est utilisée dans un contexte analytique, où elle s'applique à une fenêtre de lignes définie par analytic_clause. |
| analytic_clause |
Ce paramètre permet de définir la fenêtre d'analyse, incluant les clauses PARTITION BY, ORDER BY et ROWS ou RANGE, pour contrôler les lignes sur lesquelles la fonction s'applique. |
Description
Cette fonction permet de retourner la dernière valeur d'une colonne dans une fenêtre d'analyse définie. Elle est utile dans les requêtes analytiques pour identifier la dernière valeur rencontrée dans un groupe de lignes, en fonction de l'ordre spécifié.
Remarques
- Fonction analytique de fin de fenêtre : La fonction LAST_VALUE permet de récupérer la dernière valeur rencontrée dans une fenêtre d'analyse, définie
dynamiquement avec OVER. Contrairement à une fonction d'agrégation classique, elle agit ligne par ligne, en tenant compte de l'ordre spécifié dans la fenêtre.
- Ordre déterminant pour le résultat : Le résultat retourné par LAST_VALUE dépend directement de la clause ORDER BY dans analytic_clause. Si aucun ordre n'est
défini ou mal configuré, la fonction peut retourner des résultats inattendus, car la notion de "dernière" valeur devient arbitraire.
- Effet de la clause ROWS sur le comportement : Sans clause ROWS BETWEEN ..., LAST_VALUE retourne souvent la valeur de la ligne courante elle-même. Pour
obtenir le comportement attendu (c'est-à-dire la dernière valeur de toute la fenêtre), il est souvent nécessaire de spécifier explicitement ROWS BETWEEN UNBOUNDED
PRECEDING AND UNBOUNDED FOLLOWING.
- Différence avec FIRST_VALUE : Alors que FIRST_VALUE récupère la première valeur dans la fenêtre, LAST_VALUE récupère la dernière. Ensemble, ces deux
fonctions permettent d'encadrer une série de données et sont très utilisées dans les comparaisons de début/fin de période ou d'état.
- Gestion explicite des valeurs NULL : Les mots clefs RESPECT NULLS et IGNORE NULLS permettent un contrôle précis sur la façon dont les valeurs nulles sont
traitées. Par défaut, RESPECT NULLS est appliqué, ce qui signifie que si la dernière valeur est NULL, elle sera retournée, sauf indication contraire.
- Utilisation dans des partitions analytiques : Avec PARTITION BY, LAST_VALUE peut être appliquée indépendamment sur des sous-groupes de données. Cela permet,
par exemple, de récupérer la dernière commande passée par chaque client sans avoir à écrire une sous-requête ou un regroupement complexe.
- Valeur mise à jour dynamiquement ligne par ligne : Comme toutes les fonctions analytiques, LAST_VALUE retourne une valeur pour chaque ligne du résultat.
Mais contrairement aux agrégations classiques, elle prend en compte uniquement les lignes dans la fenêtre courante, ce qui la rend très utile dans les tableaux cumulés
ou les analyses glissantes.
- Attention aux fausses attentes : Beaucoup de développeurs s'attendent à ce que LAST_VALUE retourne la valeur de la dernière ligne du groupe, ce qui n'est
vrai que si la clause ROWS est bien définie. Sinon, la fonction retourne la dernière valeur visible dans la fenêtre courante, qui peut être tronquée.
- Fonction souvent utilisée avec d'autres analytiques : LAST_VALUE est fréquemment combinée avec des fonctions comme LAG, LEAD, RANK, ou FIRST_VALUE pour
effectuer des analyses temporelles, détecter des changements d'état, ou comparer les extrémités d'une série ordonnée.
- Compatible avec tout type d'expression : Le paramètre expr peut être une colonne, une sous-expression ou un calcul. Cela permet d'utiliser
LAST_VALUE sur des données transformées, comme une moyenne, une concaténation de chaînes ou un calcul conditionnel.
- Optimisée pour le traitement analytique massif : Comme elle fait partie du moteur analytique intégré d'Oracle depuis la version 9i, la fonction
LAST_VALUE bénéficie d'optimisations internes. Elle peut être utilisée de manière intensive dans des traitements complexes ou sur de grands volumes de données sans
perte significative de performance.
- Fonction particulièrement utile pour les rapports : Dans les rapports de synthèse ou les vues analytiques, LAST_VALUE permet d'afficher à chaque ligne
la dernière valeur connue d'un indicateur dans une période donnée. Cela peut aider à suivre l'évolution des données jusqu'à la dernière valeur disponible, même si
celle-ci n'apparaît pas à la ligne courante.
Dernière mise à jour : Dimanche, le 29 Juin 2025