Inhaltsverzeichnis

Oracle Analytic Functions im praktischen Einsatz

Eine Einführung zum Thema steht hier:
http://www.pipperr.de/knowhow/ana_function/analytic_functions.html

Eine ANA Funktion wird auf der Ergebnis Menge durchgeführt:

Oracle ANA Grundlagen


Beispiel 1 - Lücken in einem Datenstrom finden

Vorgänger/Nachfolger finden

z.B.

In einer Tabelle soll eine normalerweise fortlaufende Nummer auf Lücken geprüft werden:


Beispiel 2 - Top N Query

Ranking Funktionen:

Mit der rank() Funktion kann dem Ergebnis einer Abfrage ein Rang pro Ergebnis zu geordnet werden.


Beispiel 3 - Doppelte Daten finden

Mit Hilfe der row_number() Funktion doppelte Daten identifizieren


Beispiel 4 - Prozentangabe der Anteile einer Liste ausgeben

Mit Hilfe der ratio_to_report() kann der Prozentuale Anteil an der Ergebnismenge angezeigt werden.


Beispiel 5 - gleitende Summen berechnen bzw. kumulative Werte aufsummieren - Fensterfunktion verwenden

Mit Hilfe einer Fensterfunktion soll zum Beispiel die Summe der letzen drei jeweiligen Monate errechnet werden.


Beispiel 6 - Ein Listen von Werten in SQL erstellen

Aufgabe: Ein separierte Liste soll aus den Werten einer SQL Abfrage erstellt werden.

Vor 11g ⇒ siehe Eine eigene Aggregat Funktion für eine group by Abfrage erstellen

Lösung mit listagg:

SQL>SELECT deptno
         , listagg(ename,':') WITHIN GROUP (ORDER BY ename)  AS emp_list
     FROM emp GROUP BY deptno
/     
 
    DEPTNO    EMP_LIST
----------    ---------------------------------
        10    CLARK:KING:MILLER
        20    ADAMS:JONES
        30    ALLEN:MARTIN:TURNER:WARD
 

Mit listagg kann eine Liste bis maximal 4000 Zeichen aggregiert werden.

Quelle, siehe http://docs.oracle.com/cd/E11882_01/server.112/e10592/functions089.htm und http://www.oracle-developer.net/display.php?id=515


Weitere Informationen im Netz

Oracle

12c