Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_analytic_functions

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

  • Lag()
  • Lead()

z.B.

  • Unterschied zwischen zwei Bereichen/Quartalen
  • Lücken in Daten finden

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


Beispiel 2 - Top N Query

Ranking Funktionen:

  • rank()
  • dense_rank()
  • row_number()
  • cume_dist()
  • percent_rank()
  • Ntile()

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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
prog/oracle_analytic_functions.txt · Zuletzt geändert: 2016/07/07 20:27 von gpipperr