OLAP-funktioner (OnLine Analytical Processing) udfører beregningsfunktioner over et vindue af data. Vinduet kan angive en inddeling af rækker, en opstilling af rækkerne i inddelingerne eller en beregningsgruppe. Vha. beregningsfunktionen kan brugeren angive, hvilke rækker i forhold til den aktuell række der skal indgå i beregningen. Brugen af et sådan vindue gør det f.eks. muligt at udregne akkumuleret sum og bevægeligt gennemsnit.
Ud over de eksisterende beregningsfunktioner som SUM og AVG kan OLAP-funktionerne opstille elementer på en liste (RANK og DENSE_RANK) og nummerere rækker (ROW_NUMBER) ud fra en bestemt inddeling og opstilling af rækker.
I forespørgslen nedenfor vises medarbejdernes placering på lønningslisten og den samlede lønsum i afdeling 15 og 38:
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
Resultatet er:
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