Prakt. Datenbankprogrammierung. Sommersemester I,5: Aggregieren von Daten mit Gruppen-Funktionen

Ähnliche Dokumente
SQL Intensivpraktikum SS 2008

Prakt. Datenbankprogrammierung. Sommersemester 2005

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

functions Two Types of SQL Functions

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

SQL-Einführung Teil 2

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

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

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

Abfragen (Queries, Subqueries)

Prakt. Datenbankprogrammierung. Sommersemester I,9: Datenmanipulation. Daten-Manipulations-Sprache. Das INSERT-Statement

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

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

Prakt. Datenbankprogrammierung. Sommersemester 2005

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

Übungsaufgaben mit Lösungen

Erzeugung und Veränderung von Tabellen

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

Übersicht der wichtigsten MySQL-Befehle

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

Analysemöglichkeiten mit SQL:

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

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

Die Datenmanipulationssprache SQL

Oracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH

Variable. Interaktive Skripte

Prakt. Datenbankprogrammierung. Sommersemester 2005

Es geht also im die SQL Data Manipulation Language.

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

Prakt. Datenbankprogrammierung. Sommersemester 2005

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

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

Aggregatfunktionen in SQL

Oracle Analytic Functions

SQL: Abfragen für einzelne Tabellen

Prakt. Datenbankprogrammierung. Sommersemester Überblick über Trigger. II,11: Erstellen von Datenbank- Triggern. Datenbank-Trigger: Beispiel

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

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

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

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Erzeugen von Constraints

Entspricht dem kartesischen Produkt von zwei oder mehr selektierten Tabellen ohne Join-Bedingung.

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

GROUP BY, HAVING und Sichten

Wiederholung VU Datenmodellierung

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

SQL als Zugriffssprache

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL Data Manipulation Language (DML) und Query Language (QL)

Die relationale Abfragesprache SQL Structured Query Language

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Informatik 12 Datenbanken SQL-Einführung

Arbeit mit zusammengesetzten Datentypen

Trigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers

DBMS_RLS Package Es besteht die Möglichkeit, auf Views oder Tables eine Funktion zu legen, die abhängig von bestimmten Faktoren

Datenbanksysteme Kapitel 5: SQL - Grundlagen

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

Mengen- oder SET-Operatoren fassen das Ergebnis von zwei oder mehreren Teilabfragen zu einem Ergebnis zusammen.

Einführung in Datenbanken und SQL

Prakt. Datenbankprogrammierung. Sommersemester II,4: Kontrollstrukturen. Kontrolle der Ausführungsreihenfolge. IF-Statement

Wiederholung VU Datenmodellierung

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

Übung 1: SQL. Übungen finden bei Bedarf anstelle der Vorlesungen statt Fragen? Vorlesung Datenbankeinsatz WS 04/05 IPD

5.8 Bibliotheken für PostgreSQL

SQL Intensivpraktikum SS 2008

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

Oracle 10g Einführung

Datenbanksysteme SS 2007

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

Kapitel 5: Der SQL-Standard

Grundlagen von Datenbanken

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries

Inhaltsverzeichnis. Einleitung

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenschutz: Zugriffsrechte in SQL

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

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

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

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

ACCESS SQL ACCESS SQL

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

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

ARBEITSBLATT ZUR SQL-BEFEHLEN

Warum wird mein Index nicht benutzt?

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

Kapitel 3: Datenbanksysteme

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

SQL mit ORACLE. Wolf-Michael Kahler

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

Anfragesprachen für On-Line Analytical Processing (OLAP)

Vorlesung Wissensentdeckung in Datenbanken

Analytische Funktionen erfolgreich eingesetzt

Transkript:

Prakt. Datenbankprogrammierung Sommersemester 2005 I,5: Aggregieren von Daten mit Gruppen-Funktionen Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg Was sind Gruppen-Funktionen? Gruppenfunktionen operieren auf Mengen von Zeilen und geben ein Ergebnis pro Gruppe zurück. DEPTNO SAL 10 2450 10 1300 20 800 20 1100 20 2975 30 1600 30 2850 30 950 30 1500 maximum salary in the table I-108 Prakt. Datenbankprogrammierung SS05 Christian Goldberg MAX(SAL) 5000 Arten von Gruppenfunktionen Anwendung von Gruppenfunktionen AVG COUNT MAX MIN STDDEV SUM VARIANCE SELECT FROM [WHERE [ORDER BY column, group_function(column) table condition] column]; I-109 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-110 Prakt. Datenbankprogrammierung SS05 Christian Goldberg

Die Funktionen AVG und SUM AVG und SUM werden für numerische Daten verwendet. Die Funktionen MIN und MAX MIN und MAX können mit jedem Datentyp verwendet werden. SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE 'SALES%'; SQL> SELECT MIN(hiredate), MAX(hiredate) ; AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- 1400 1600 1250 5600 MIN(HIRED MAX(HIRED 17-DEC-80 12-JAN-83 I-111 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-112 Prakt. Datenbankprogrammierung SS05 Christian Goldberg COUNT(*) 6 Die COUNT-Funktion COUNT(*) gibt die Anzahl der Zeilen einer Tabelle zurück. SQL> SELECT COUNT(*) 3 WHERE deptno = 30; Die COUNT-Funktion COUNT(expr expr) ) gibt die Anzahl der Zeilen zurück, die nicht NULL sind. SQL> SELECT COUNT(comm) 3 WHERE deptno = 30; COUNT(COMM) -- 4 I-113 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-114 Prakt. Datenbankprogrammierung SS05 Christian Goldberg

Gruppenfunktionen und NULL-Werte SQL> SELECT AVG(comm) ; AVG(COMM) 550 Anwendung der NVL-Funktion mit Gruppenfunktionen Gruppenfunktionen ignorieren NULL- Werte in den Spalten. Durch die NVL-Funktion werden NULL- Werte in Gruppenfunktionen berücksichtigt. SQL> SELECT AVG(NVL(comm,0)) ; AVG(NVL(COMM,0)) ------- 157.14286 I-115 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-116 Prakt. Datenbankprogrammierung SS05 Christian Goldberg Erstellen von Gruppen von Daten DEPTNO SAL 10 2450 10 1300 20 800 20 1100 20 2975 30 1600 30 2850 30 950 30 1500 2916.6667 2175 1566.6667 DEPTNO AVG(SAL) ------- 10 2916.6667 20 2175 30 1566.6667 Erstellen von Gruppen von Daten: Die GROUP-BY-Klausel SELECT FROM [WHERE [GROUP BY [ORDER BY column, group_function(column) table condition] group_by_expression] column]; Durchschn. Gehalt in der - Tabelle für jede Abteilung Tabellenzeilen werden mit der GROUP-BY BY- Klausel in kleinere Gruppen eingeteilt. I-117 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-118 Prakt. Datenbankprogrammierung SS05 Christian Goldberg

Anwendung der GROUP-BY-Klausel Alle Spalten unter SELECT, die nicht in Gruppenfunktionen verwendet werden, müssen in der GROUP-BY BY-Klausel stehen. SQL> SELECT deptno, AVG(sal) 3 GROUP BY deptno; DEPTNO AVG(SAL) 10 2916.6667 20 2175 30 1566.6667 Anwendung der GROUP-BY-Klausel Die GROUP-BY BY-Spalte muss umgekehrt nicht unter SELECT stehen. SQL> SELECT AVG(sal) 3 GROUP BY deptno; AVG(SAL) 2916.6667 2175 1566.6667 I-119 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-120 Prakt. Datenbankprogrammierung SS05 Christian Goldberg Gruppieren nach mehr als einer Spalte DEPTNO JOB SAL 10 MANAGER 2450 10 PRESIDENT 5000 10 CLERK 1300 20 CLERK 800 20 CLERK 1100 20 ANALYST 3000 20 ANALYST 3000 20 MANAGER 2975 30 SALESMAN 1600 30 MANAGER 2850 30 SALESMAN 1250 30 CLERK 950 30 SALESMAN 1500 30 SALESMAN 1250 sum salaries in the table for each job, grouped by department DEPTNO -------- 10 10 10 20 20 20 30 30 30 JOB SUM(SAL) CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600 Anwendung der GROUP-BY- Klausel mit mehreren Spalten SQL> SELECT deptno, job, sum(sal) 3 GROUP BY deptno, job; DEPTNO JOB SUM(SAL) 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900... 9 rows selected. I-121 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-122 Prakt. Datenbankprogrammierung SS05 Christian Goldberg

Fehlerhafte Anfragen mit Gruppenfunktionen Alle Spalten und Ausdrücke unter SELECT, die keine Aggregatsfunktion darstellen, müssen in der GROUP-BY BY-Klausel stehen. SQL> SELECT deptno, COUNT(ename) ; SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function Spaltenname fehlt in der GROUP-BY BY-Klausel Fehlerhafte Anfragen mit Gruppenfunktionen Die WHERE-Klause kann nicht zur Auswahl von Gruppen verwendet werden. Auswahl von Gruppen mit HAVING-Klausel. SQL> SELECT deptno, AVG(sal) 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno; WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here WHERE-Klausel kann nicht zur Auswahl von Gruppen verwendet werden I-123 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-124 Prakt. Datenbankprogrammierung SS05 Christian Goldberg Auswahl von Ergebnisgruppen DEPTNO SAL 10 2450 10 1300 20 800 20 1100 20 2975 30 1600 30 2850 30 950 30 1500 5000 3000 2850 Maximales Gehalt pro Abteilung ist Größer als $2900 DEPTNO MAX(SAL) Auswahl von Ergebnisgruppen: Die HAVING-Klausel Mit der HAVING-Klausel werden Gruppen ausgewählt: Zeilen werden gruppiert. Die Gruppenfunktion wird angewendet. Gruppen, die die HAVING-Bedingung erfüllen, werden angezeigt. SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY column, group_function table condition] group_by_expression] group_condition] column]; I-125 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-126 Prakt. Datenbankprogrammierung SS05 Christian Goldberg

Anwendung der HAVING-Klausel Anwendung der HAVING-Klausel SQL> SELECT deptno, max(sal) 3 GROUP BY deptno 4 HAVING max(sal)>2900; DEPTNO MAX(SAL) SQL> SELECT job, SUM(sal) PAYROLL 3 WHERE job NOT LIKE 'SALES%' 4 GROUP BY job 5 HAVING SUM(sal)>5000 6 ORDER BY SUM(sal); JOB PAYROLL ANALYST 6000 MANAGER 8275 I-127 Prakt. Datenbankprogrammierung SS05 Christian Goldberg I-128 Prakt. Datenbankprogrammierung SS05 Christian Goldberg Schachtelung von Gruppenfunktionen Anzeige des maximal durchschnittlichen Gehalts pro Abteilung SQL> SELECT max(avg(sal)) 3 GROUP BY deptno; MAX(AVG(SAL)) ---- 2916.6667 I-129 Prakt. Datenbankprogrammierung SS05 Christian Goldberg