Aggregatfunktionen in SQL

Ähnliche Dokumente
SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

GROUP BY, HAVING und Sichten

SQL,Teil 3: Unterabfragen, Views & Berechnungen

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

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

Übersicht der wichtigsten MySQL-Befehle

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

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

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

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

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

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

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

Es geht also im die SQL Data Manipulation Language.

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

SQL: Abfragen für einzelne Tabellen

Abfragen (Queries, Subqueries)

ACCESS SQL ACCESS SQL

SQL Intensivpraktikum SS 2008

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

1 Vorstellung Kursbeispiel

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

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

Kapitel 5: Der SQL-Standard

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

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

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

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

Inhaltsverzeichnis. Einleitung

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

Vorlesung Wissensentdeckung in Datenbanken

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Datenbanken. Heute dreht sich alles um SQL-Abfragen mit JOINS

Datenbanksysteme Kapitel 5: SQL - Grundlagen

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

Dieter Staas Das Einsteigerseminar SQL

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

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

SQL - Übungen Bearbeitung der Datenbank Personal (1)

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

Datenbanken im WI-Unterricht mit

5.8 Bibliotheken für PostgreSQL

Vorlesung Datenbankmanagementsysteme

Sructred Query Language

Tabellenkalkulationssysteme Inf 9 / 1

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Query Languages (QL) Relationale Abfragesprachen/Relational

Data Cube. 1. Einführung. 2. Aggregation in SQL, GROUP BY. 3. Probleme mit GROUP BY. 4. Der Cube-Operator. 5. Implementierung des Data Cube

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

Aufgaben zu Tabellenanalyse mit SQL

Abfragen aus mehreren Tabellen (mit join)

PHP- Umgang mit Datenbanken (1)

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

SQL als Zugriffssprache

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

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

18. Hinweise zur schriftlichen Abiturprüfung 2021 im Fach Informatik

MySQL: Einfaches Rechnen.

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY

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

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

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

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

MCSA: SQL 2016 Database Development

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

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

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

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

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Datenbank und Tabelle mit SQL erstellen

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

A Datenbanken. A.1 Firebird. A.1.1 Installation des Servers. A.1.2 Installation der Beispieldatenbanken. Datenbanken 1

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Musterklausur_2 Grundlagen Informatik

Wissensentdeckung in Datenbanken

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

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

Oracle 10g Einführung

Transkript:

Aggregatfunktionen in SQL Michael Dienert 14. April 2008 1 Definition von Aggregatfunktionen Ihren Namen haben die Aggregatfunktionen vom englischen Verb to aggregate, was auf deutsch anhäufen, vereinigen, zusammenballen, heisst. Hier nun die Definition der Aggregatfunktionen: Aggregatfunktionen bilden genau einen Ergebniswert aus einer Vielzahl von Eingabewerten. Die fünf wichtigsten SQL-Aggregatfunktionen sind: COUNT, SUM, AVG, MAX, MIN 1.1 Ein Beispiel Tabelle Wetter stadt temp min temp max FR -1 19 S -5 12 MA -2 13 KA -2 14 Die Abfrage liefert als Ergebnis -1, Freiburg ist also die Stadt, mit der höchsten Minimaltemperatur. Möchte man die ganze zugehörige Zeile ausgeben, lässt sich das mit einer Unterabfrage (Sub-Query) erreichen. Hier ein Beispiel, in dem schrittweise eine Unterabfrage zusammengestellt wird: Die Abfrage von oben liefert als Ergebnis z.b. den Wert 3. Da man nun diesen Wert kennt, kann man gezielt die zugehörige Stadt abfragen: SELECT * FROM wetter WHERE temp_min = 3; 1

Diese beiden Abfragen kann man jetzt zusammenfassen: SELECT * FROM wetter WHERE temp_min = (SELECT MAX(temp_min) FROM wetter); 1.2 Aufgaben Unter http://msv.wara.de/ dienert/archive/wetter.sql ist ein SQL-Skript abgelegt, mit dem die Datenbank wetter erzeugt wird. Kopiere diese Datei mit dem Kommando wget in Dein Heimatverzeichnis, lege Dich selbst als postgres-benutzer an (su postgres..., createuser meinanmeldename, exit) und spiele die Datei mit psql -f wetter.sql postgres ein. 1. Warum meldet der postgres-server beim ersten Einspielen der datei wetter.sql einen Fehler? Die Antwort auf diese Frage steht in der Datei wetter.sql selbst. 2. Verbinde Dich mit der Datenbank wetter mit dem Kommando psql wetter und teste alle Abfragen aus Abschnitt 1. 3. Warum funktioniert folgende Abfrage nicht: SELECT stadt, max(temp_min) FROM wetter; Hinweis: Wieviele Ergebniszeilen haben die Abfragen und SELECT stadt FROM wetter; jeweils? 2 GROUP BY und HAVING - Statements 2.1 Eine erweiterte Temperaturtabelle Messen wir die Temperaturen in den Städten an mehreren Tagen, kommen wir zu einer neuem Messwertetabelle: 2

Tabelle Wetter Stadt Temp min Temp max freiburg -1 19 stuttgart -5 12 mannheim -2 13 karlsruhe -2 14 freiburg -0.5 17 stuttgart -3 13 mannheim -2 10 karlsruhe -2 12 freiburg 0.5 21 stuttgart -0.5 14 mannheim -1 13.5 karlsruhe -1.5 13.5 freiburg 3 14 stuttgart 1.5 16 mannheim 0.5 13 karlsruhe 2 14 Das Berechnen absoluter Minimal- oder Maximalwerte kann genau gleich wie oben erfolgen. Wie sieht es aber aus, wenn ich z.b. die durchschnittliche Minimaltemperatur der einzelnen Städte haben möchte? Für diese Aufgabe müsste ich die Messwerte, die zu jeweils einer Stadt gehören zusammenfassen, also gruppieren und dann den jeweiligen Durchschnitt dieser Gruppen berechnen. 3 Zusammenfassen gleicher Werte Das SQL-Statement GROUP BY wird benutzt, um die Zeilen einer Tabelle zusammenzufassen, die die gleichen Spaltenwerte haben. Die SQL-Abfrage SELECT stadt from wetter; liefert als Ergebnis eine liste mit 16 Einträgen: jede Stadt kommt 4 mal vor. Nun kann man alle Ergebniszeilen zusammenfassen, bei denen der Städtenamen gleich ist: SELECT stadt FROM wetter GROUP BY stadt; Und schliesslich den Durchschnitt berechnen: SELECT stadt, AVG(temp_min) FROM wetter GROUP BY stadt; Eine Aggregations-Funktion wird über alle Zeilen berechnet, die eine Gruppe bilden. Für jede Gruppe gibt es ein Ergebnis der Aggregations-Funktion. Nun fragt man sich vielleicht, wie dann das Beispiel ganz oben () funktioniert. Es enthält ja eine Aggregationsfunktion aber keinen GROUP BY - Ausdruck: 3

Wird eine Aggregations-Funktion ohne GROUP BY verwendet, werden alle selektierten Zeilen als eine Gruppe betrachtet. 3.1 Aufgaben Teste alle Abfragen aus Abschnitt 3 4 Zugriff auf nicht gruppierte Attribute Die Verwendung von GROUP BY schränkt den Zugriff auf die anderen Attriute der Tabelle allerdings ein: Alle Spalten, die nicht gruppiert werden, können nur noch in Aggregat- Funktionen verwendet werden! Folgende Abfrage ist also nicht möglich: SELECT stadt, temp_min FROM wetter GROUP BY stadt; Das ergibt unter postgres folgende Fehlermeldung: ERROR: column "wetter.temp_min" must appear in the GROUP BY clause or be used in an aggregate function} Warum ist das so? Ganz einfach: durch die Gruppierung der Städte soll das RDBMS 4 Werte für die Städte aber 16 Werte für die Temperaturen ausgeben, also eine Tabelle erzeugen, die gleichzeitig 4 und 16 Zeilen hat, was natürlich nicht klappen kann. 4.1 Aufgaben Teste die Abfragen aus Abschnitt 4. Warum funktioniert folgende Abfrage und warum hat sie 14 Ergebniszeilen: SELECT stadt, temp_min FROM wetter GROUP BY stadt, temp_min; 5 Filterung der Gruppen Nun möchten wir dieses Ergebnis einschränken: es sollen nur die Städte aufgelistet werden, bei denen die Durchschnittstemperatur über -1 C liegt. Leider können wir diese Filterfunktion nicht mit WHERE erzeugen: WHERE selektiert die Zeilen bevor die Aggregatfunktion berechnet und mit GROUP BY Gruppen gebildet werden. Das heisst mit anderen Worten: WHERE bestimmt, welche Zeilen in die Berechnung der Aggregationsfunktion einfliessen. Wir wollen aber nach der Berechnung der Mittelwerte filtern. Hierfür muss man das HAVING-Schlüsselwort verwenden: 4

Mit dem Schlüsselwort HAVING werden ganze Gruppen gefiltert, nachdem sie mit GROUP BY gebildet wurden. In der praktischen Anwendung enthält die HAVING-Anweisung immer eine Aggregationsfunktion. Hier nun das Beispiel: SELECT AVG(temp_min), stadt FROM wetter GROUP BY stadt HAVING AVG(temp_min) > -1; 5.1 Aufgabe Teste auch dieses Beispiel 5