Oracle Analytic SQL. o Anderer Name: Window functions o Ab 8i o Einfache Ansätze für komplexe Problemstellungen. o Anwendung:

Ähnliche Dokumente
Oracle Analytic Functions

DOAG Analytische Funktionen in SQL für Einsteiger

Analytische Funktionen erfolgreich eingesetzt

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

Speed up your Query Strategien zur Optimierung von SQL-Queries. Juni 2012 Ulrike Brenner

Analytische Auswertungen in SQL

Analytische Funktionen in SQL für Einsteiger

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

SQL Intensivpraktikum SS 2008

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Datenbankprogrammierung

Speed up your Query - Strategien zur Optimierung von SQL-Queries

First. Kapitel 4Functions. Deterministische und nicht-deterministische Funktionen

Informatik 12 Datenbanken SQL-Einführung

SQL als Zugriffssprache

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Advanced SQL. Komplexe Abfragen mit aktuellem SQL. SQL wird oft unterschätzt und kann mehr als einfache Joins und Unterabfragen

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Abfragen (Queries, Subqueries)

SQL Wiederholung. Datenbanktechnologien. Verbunde. Aggregation und Gruppierung. Unterabfragen. Hochschule für Technik und Wirtschaft Berlin

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

Aggregatfunktionen in SQL

SQL: Abfragen für einzelne Tabellen

Art der Info: Technische Background Info Teil 1 (April 2002)

MySQL: Einfaches Rechnen.

Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung. Stefan Maihack Dipl. Ing. (FH) Datum:

Vorlesung Datenbankmanagementsysteme

Kleine Helferlein. Jens Behring its-people. Copyright its-people

Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt

Multidimensionales Datenmodell, Anfrageverarbeitung und Anfrageoptimierung

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Art der Info: Technische Background Info Teil 3 (April 2002)

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle Art der Info Technische Background Info (April 2002)

Die Datenmanipulationssprache SQL

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Übungsaufgaben mit Lösungen

Es geht also im die SQL Data Manipulation Language.

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Art der Info: Technische Background Info Teil 2 (April 2002)

<Insert Picture Here> Datenschätze heben: Data Mining Carsten Czarski Leitender Systemberater Business Unit Database ORACLE Deutschland GmbH

SQL. Structured Query Language

10 SQL-Basics: Erweiterte Abfragen mit SELECT Im Mittelpunkt dieses Kapitels steht nicht nur die einfache Auswahl von Spalten, sondern auch die

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Oracle 10g Einführung

Oracle Datenbankprogrammierung mit PL/SQL Aufbau

Oracle12c für Entwickler

Informatik Datenbanken SQL-Einführung

ACCESS SQL ACCESS SQL

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Datenbanken Labor, MI : Übung 1 SQL - Abfragen Patrick Lipinski

Datenbankabfragen und Datenmanipulation

Data-Warehouse-Technologien

Skripte schreiben. Überblick SQL*Plus. Einloggen in SQL*Plus. Tabellenstrukturen anzeigen

Update für Entwickler

Stichwortverzeichnis. Iron Werther. Business Intelligence

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

PostgreSQL in großen Installationen

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Aktuelle Entwicklungen

8 DML (1) Daten abfragen

Prakt. Datenbankprogrammierung. Sommersemester 2005

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

Einstieg in das SQL- und Datenbanktuning Loblied auf den Tabellen-Index!

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL Optimizer und SQL Performance

Einstellungen zur Verwendung von Flashback-Abfragen

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Fortgeschrittene OLAP Analysemodelle

Indexing und Performance Tuning

5.8 Bibliotheken für PostgreSQL

INFORMATIONSUNTERLAGEN. Grundzüge der SQL-Programmierung. Vag 09/2005

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

ARBEITSBLATT ZU SQL-BEFEHLEN

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

SQL Tipps und Tricks Part III

Teil 7: Data Warehouses und neuere SQL-Konstrukte

Oracle OLAP 11g: Performance für das Oracle Data Warehouse

Teil 7: Data Warehouses und neuere SQL-Konstrukte

GROUP BY, HAVING und Sichten

Data Warehousing und Data Mining

Kapitel 5: Der SQL-Standard

SQL,Teil 3: Unterabfragen, Views & Berechnungen

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

Einführung in Datenbanken und SQL

SQL: Weitere Funktionen

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

Transkript:

1 Analytic SQL

Oracle Analytic SQL Anderer Name: Windw functins Ab 8i Einfache Ansätze für kmplexe Prblemstellungen Mit Standard-SQL meist nicht der nicht elegant zu lösen Effizientere Abarbeitung als mit Standard-SQL Vermeiden vn PL/SQL-Cde Anwendung: Ranking Aggregierung Zeilenweise Verarbeitung Statistik Was-wäre-wenn -Szenarien Markus Schmidt 2

Anwendungsbeispiele Running ttals Zeilenweise Berechnung der kumulativen Umsätze, bei der jeder Datensatz die Summe der vrhergehenden Datensätze beinhaltet Anteil innerhalb einer Gruppe Berechnung des Anteils eines Gehalts bezgen auf die Gesamtsumme innerhalb einer Abteilung Tp-N-Abfragen Finde die N umsatzstärksten Prdukte pr Prduktgruppe Gleitender Durchschnitt Berechne den Durchschnittswert jeweils über die vrhergehenden N Datensätze Ranglisten Markus Schmidt 3

Syntax Analytic-Functin (<Argument1>,<Argument2>, <Argument3>) OVER ( <Query-Partitin-Clause> <Order-By-Clause> <Windwing-Clause> ) OVER - identifiziert Analytic Functin (Unterschied zu GROUP BY) PARTITION BY aggregiert Ergebnismengen in Gruppen (Partitinen) ORDER BY srtiert Daten innerhalb der Partitinen WINDOWING lgische Offsets innerhalb Teilergebnissen (Datensätze der Bereiche) Markus Schmidt 4

Beispiel Running Ttals SELECT ename, deptn, sal, (SELECT SUM (sal) FROM emp e1 WHERE e1.deptn < emp.deptn OR (e1.deptn = emp.deptn AND e1.ename <= emp.ename)) running_ttal, (SELECT SUM (sal) FROM emp e2 WHERE e2.deptn = emp.deptn AND e2.ename <= emp.ename) dept_ttal, (SELECT COUNT (ename) FROM emp e3 WHERE e3.deptn = emp.deptn AND e3.ename <= emp.ename) seq FROM emp ORDER BY deptn, ename SELECT ename, deptn, sal, SUM (sal) OVER (ORDER BY deptn, ename) running_ttal, SUM (sal) OVER (PARTITION BY deptn ORDER BY ename) dept_ttal, ROW_NUMBER () OVER (PARTITION BY deptn ORDER BY ename) seq FROM emp ORDER BY deptn, ename Beispiel Markus Schmidt 5

Erweiterte Syntax <ROWS RANGE> BETWEEN... AND UNBOUNDED PRECEDING start f partitin UNBOUNDED FOLLOWING end f partitin CURRENT ROW value_expr < PRECEDING FOLLOWING> Beispiele ROWS BETWEEN 1 PRECEDING and 1 FOLLOWING ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW RANGE BETWEEN INTERVAL '7' day PRECEDING AND CURRENT ROW RANGE BETWEEN 10 PRECEDING AND 10 FOLLOWING Markus Schmidt 6

Standard-Aggregatfunktinen ROW_NUMBER() SUM(), MIN(), MAX(), AVG() LAG() LEAD() RANK() DENSE_RANK() PERCENT_RANK() NTILE() FIRST_VALUE() LAST_VALUE() FIRST() LAST() STATISTICAL FUNCTIONS Markus Schmidt 7

Gruppenbildung Partitin By Aufteilung der Ergebnismenge in Gruppen Partitinierung ist beliebiger Ausdruck, jedch keine Gruppenfunktin zulässig Einige Funktinen unterstützen Windw-Klausel zur weiteren Begrenzung SELECT emplyee_id, department_id, COUNT (*) OVER (PARTITION BY department_id) DEPT_COUNT FROM emplyees Beispiel Markus Schmidt 8

Unterschied zu Grup By GROUP BY Spaltenliste darf nur gruppierte Spalten swie Spalten mit Gruppenfunktin enthalten Gruppierung erflgt nur nach Spalten in Grup By-Ausdruck Analytic Functins Gruppenwerte können mehrfach erscheinen Nutzung vn Spalten hne Gruppenfunktin möglich Markus Schmidt 9

Executin Plans Beispiel SELECT deptn, COUNT(*) DEPT_COUNT FROM emp WHERE deptn IN (20, 30) GROUP BY deptn; SELECT deptn, empn, COUNT(*) OVER (PARTITION BY deptn) CNT FROM emp WHERE deptn IN (20, 30) ORDER BY 1; Markus Schmidt 10

Srtierung innerhalb Partitinen Srtierung innerhalb Partitinen <> Srtierung des Gesamtergebnisses (PARTITION BY ORDER BY ) Srtierung der Partitinen kann Einfluss auf Ergebnis haben: SELECT ename, deptn, sal, SUM (sal) OVER (ORDER BY ename, deptn) sum_ename_deptn, SUM (sal) OVER (ORDER BY deptn, ename) sum_deptn_ename FROM emp ORDER BY ename, deptn Beispiel Markus Schmidt 11

Tuning Läuft ein Vielfaches schneller als nrmales SQL Andere Möglichkeiten als reines SQL Tuning wie üblich: Indizierung Partitining Parallelisierung Markus Schmidt 12

Beispiel Ranking RANK() Evtl. mit Lücken DENSE_RANK() Ohne Lücken LAST_NAME SALARY NORMAL_RANK DENSE_RANK King 24000 1 1 Kchhar 17000 2 2 De Haan 17000 2 2 Russell 14000 4 3 Partners 13500 5 4 Hartstein 13000 6 5 Greenberg 12008 7 6 Higgins 12008 7 6 Errazuriz 12000 9 7 Ozer 11500 10 8 SELECT ename, sal, RANK () OVER (ORDER BY sal DESC) nrmal_rank, DENSE_RANK () OVER (ORDER BY sal DESC) DENSE_RANK FROM emp; Beispiel Markus Schmidt 13

Beispiel LEAD und LAG LEAD: bestimmte vrhergehende Datensätze für die Berechnung verwenden LAG: bestimmte flgende Datensätze für die Berechnung verwenden LEAD (<sql_expr>, <ffset>, <default>) OVER (<analytic_clause>) LAG (<sql_expr>, <ffset>, <default>) OVER (<analytic_clause>) SELECT deptn, empn, sal, LEAD (sal, 1, 0) OVER (PARTITION BY deptn ORDER BY sal DESC NULLS LAST) NEXT_LOWER_SAL, LAG (sal, 1, 0) OVER (PARTITION BY deptn ORDER BY sal DESC NULLS LAST) PREV_HIGHER_SAL FROM emp WHERE deptn IN (10, 20) ORDER BY deptn, sal DESC; Beispiel Markus Schmidt 14

Weitere Beispiele Gleitender Durchschnitt Über 3 Datensätze SELECT satznummer, wert, avg(wert) OVER (ORDER BY satznummer ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) FROM tabelle Über 3 Tage SELECT tag, wert, avg(wert) OVER (ORDER BY BEGIN_INTERVAL_TIME RANGE BETWEEN interval 1 day PRECEDING AND 1 day FOLLOWING) FROM tabelle Markus Schmidt 15

Weitere Beispiele Summenbildung, Ttale und Subttale, Anteil SELECT DISTINCT prd_id, ttal, subttal, ROUND (subttal / ttal * 100, 2) anteil FROM (SELECT prd_id, SUM (quantity_sld) OVER () ttal, SUM (quantity_sld) OVER (PARTITION BY prd_id) subttal FROM sales) ORDER BY anteil DESC Beispiel Markus Schmidt 16

Weitere Beispiele Daten auf verschiedene Töpfe ( buckets ) verteilen Mit einer festgelegten Anzahl vn Elementen pr Tpf SELECT prd_list_price, prd_name, CEIL (ROW_NUMBER () OVER (ORDER BY prd_list_price) / 4) grp FROM prduct Mit einer bestimmten Anzahl vn Töpfen SELECT prd_list_price, prd_name, NTILE (10) OVER (ORDER BY prd_list_price) grp, FROM prducts Beispiel Markus Schmidt 17

Fragen? Markus Schmidt 18

Kntakt Essential Bytes GmbH & C. KG Markus Schmidt Steinebühlstraße 30 77749 Hhberg mschmidt@essential-bytes.de http://www.essential-bytes.de Markus Schmidt 19