Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_analytic_functions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
prog:oracle_analytic_functions [2015/07/26 16:10] – [Beispiel 5 - gleitende Summen berechnen - Fensterfunktion verwenden] gpipperrprog:oracle_analytic_functions [2016/07/07 20:27] (aktuell) gpipperr
Zeile 1: Zeile 1:
 +====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:
 +
 +{{:prog:ana:oracle_analytical_function_v01.png?400|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:
 +
 +  * [[prog:oracle_analytic_functions_lag|Beispiel 1 - Lücken in einem Datenstrom finden]]
 +
 +
 +----
 +
 +
 +==== 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. 
 +
 +  * [[prog:oracle_analytic_functions_top_n|Beispiel 2 - Top N Query ]]
 +
 +
 +
 +
 +----
 +
 +
 +==== Beispiel 3 - Doppelte Daten finden ====
 +
 +Mit Hilfe der row_number() Funktion doppelte Daten identifizieren
 +
 +  * [[prog:oracle_analytic_functions_doubletten|Beispiel 3 - Doppelte Daten finden]]
 +
 +
 +
 +----
 +
 +
 +==== Beispiel 4 - Prozentangabe der Anteile einer Liste ausgeben ====
 +
 +Mit Hilfe der ratio_to_report() kann der Prozentuale Anteil an der Ergebnismenge angezeigt werden. 
 +
 +
 +  * [[prog:oracle_analytic_functions_prozent|Beispiel 4 -Prozentsatz anzeigen]]
 +
 +
 +----
 +
 +
 +
 +==== 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.
 +
 +
 +  * [[prog:oracle_analytic_functions_window_function|Beispiel 5 -"gleitende" Summen berechnen]]
 +
 +
 +
 +----
 +
 +
 +==== 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 [[prog:sql_aggregatfunktion_erstellen|Eine eigene Aggregat Funktion für eine group by Abfrage erstellen]]
 +
 +Lösung mit listagg:
 +
 +<code bash>
 +
 +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
 +        
 +</code>
 +        
 +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**
 +
 +<fc #800000>**12c**</fc>
 +
 +  * http://www.oracle.com/technetwork/database/bi-datawarehousing/wp-in-database-analytics-12c-2132656.pdf
  
prog/oracle_analytic_functions.txt · Zuletzt geändert: 2016/07/07 20:27 von gpipperr