OLAP-Funktionen (OnLine Analytical Processing - Online-Analyseverarbeitung) führen eine Spaltenfunktionsoperation für ein Datenfenster aus. Dieses Fenster kann eine Zeilenpartitionierung, eine Reihenfolge von Zeilen innerhalb von Partitionen oder eine Spaltenberechnungsgruppe angeben. Anhand der Spaltenberechnungsgruppe kann der Benutzer angeben, welche Zeilen in Bezug auf die aktuelle Zeile in die Berechnung einfließen. Die Verwendung eines solchen Fensters ermöglicht Operationen wie kumulierte Summen und gleitende Durchschnitte.
OLAP-Funktionen ermöglichen es dem Benutzer nicht nur, ein Fenster für vorhandene Spaltenfunktionen (wie z. B. SUM und AVG) anzugeben. Mit ihrer Hilfe können außerdem Rangordnungsoperationen (RANK und DENSE_RANK) ausgeführt und Zeilen numeriert (ROW_NUMBER) werden, sofern eine spezifische Partitionierung und Reihenfolge der Zeilen vorliegt.
Die folgende Beispielabfrage ermittelt für die Abteilungen 15 und 38, basierend auf dem Gehalt, die Position eines Mitarbeiters in der Rangordnung der Abteilung und zeigt die kumulierte Summe der Gehälter in der Abteilung an:
SELECT NAME, DEPT, RANK () OVER (PARTITION BY DEPT ORDER BY SALARY DESC) AS RANK, SUM (SALARY) OVER (PARTITION BY DEPT ORDER BY SALARY DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CUMULATIVE_SUM FROM STAFF WHERE DEPT IN (15,38) ORDER BY DEPT, RANK
Diese Anweisung erzeugt das folgende Ergebnis:
NAME DEPT RANK CUMULATIVE_SUM ---------- --------- ---------- -------------------- Hanes 15 1 20659.80 Rothman 15 2 37162.63 Ngan 15 3 49670.83 Kermisch 15 4 61929.33 O'Brien 38 1 18006.00 Marenghi 38 2 35512.75 Quigley 38 3 52321.05 Naughton 38 4 65275.80 Abrahams 38 5 77285.55