Quelle est la signification de la clause OVER dans Oracle?
Réponses
Trop de publicités?Le PLUS de la clause spécifie le partitionnement, la commande et la fenêtre "sur laquelle" l'analytique de la fonction fonctionne.
Par exemple, la fonction calcule une moyenne mobile:
AVG(amt) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
date amt avg_amt
===== ==== =======
1-Jan 10.0 7.0
2-Jan 11.0 17.0
3-Jan 30.0 17.0
4-Jan 10.0 18.0
5-Jan 14.0 8.0
Il fonctionne sur une fenêtre mobile (3 lignes de large) sur les rangées, classées par date.
Ce calcule le solde courant:
SUM(amt) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
date amt sum_amt
===== ==== =======
1-Jan 10.0 10.0
2-Jan 11.0 21.0
3-Jan 30.0 51.0
4-Jan 10.0 61.0
5-Jan 14.0 75.0
Il fonctionne sur une fenêtre qui comprend la ligne actuelle et avant des lignes.
Ce calcule le maximum, séparément pour chaque "dept":
MAX(amt) OVER (PARTITION BY dept)
dept amt max_amt
==== ==== =======
ACCT 5.0 7.0
ACCT 7.0 7.0
ACCT 6.0 7.0
MRKT 10.0 11.0
MRKT 11.0 11.0
SLES 2.0 2.0
Il fonctionne sur une fenêtre qui contient toutes les lignes pour un particulier dept.
C'est une partie de l' Oracle des fonctions analytiques.