prog:oracle_analytic_functions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
prog:oracle_analytic_functions [2015/07/26 16:10] – [Beispiel 5 - gleitende Summen berechnen - Fensterfunktion verwenden] gpipperr | prog: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:// | ||
+ | |||
+ | |||
+ | |||
+ | Eine ANA Funktion wird auf der Ergebnis Menge durchgeführt: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== Beispiel 1 - Lücken in einem Datenstrom finden ==== | ||
+ | |||
+ | |||
+ | Vorgänger/ | ||
+ | |||
+ | * Lag() | ||
+ | * Lead() | ||
+ | z.B. | ||
+ | * Unterschied zwischen zwei Bereichen/ | ||
+ | * Lücken in Daten finden | ||
+ | |||
+ | In einer Tabelle soll eine normalerweise fortlaufende Nummer auf Lücken geprüft werden: | ||
+ | |||
+ | * [[prog: | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== 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: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== Beispiel 3 - Doppelte Daten finden ==== | ||
+ | |||
+ | Mit Hilfe der row_number() Funktion doppelte Daten identifizieren | ||
+ | |||
+ | * [[prog: | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== Beispiel 4 - Prozentangabe der Anteile einer Liste ausgeben ==== | ||
+ | |||
+ | Mit Hilfe der ratio_to_report() kann der Prozentuale Anteil an der Ergebnismenge angezeigt werden. | ||
+ | |||
+ | |||
+ | * [[prog: | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | |||
+ | ==== 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: | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== 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: | ||
+ | |||
+ | Lösung mit listagg: | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | SQL> | ||
+ | , listagg(ename,':' | ||
+ | FROM emp GROUP BY deptno | ||
+ | / | ||
+ | |||
+ | DEPTNO | ||
+ | ---------- | ||
+ | 10 CLARK: | ||
+ | 20 ADAMS:JONES | ||
+ | 30 ALLEN: | ||
+ | | ||
+ | </ | ||
+ | | ||
+ | Mit listagg kann eine Liste bis maximal 4000 Zeichen aggregiert werden. | ||
+ | |||
+ | Quelle, siehe http:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Weitere Informationen im Netz ===== | ||
+ | |||
+ | |||
+ | **Oracle** | ||
+ | |||
+ | <fc # | ||
+ | |||
+ | * http:// | ||
prog/oracle_analytic_functions.txt · Zuletzt geändert: 2016/07/07 20:27 von gpipperr