Die SELECT-Anweisung

Werbung
Informatik 12/13
Seite 1 von 2
Erstelldatum 19.09.2007
14:10:00
Die SELECT-Anweisung:
 Zeilen zusammenfassen
Manchmal interessiert man sich auch nur dafür, wie oft z.B. ein bestimmter Name
vorkommt. Man möchte sich also nicht alle Zeilen mit einem bestimmten Nachnamen
angeben lassen sondern nur die unterschiedlichen und deren Häufigkeit.
SELECT nachname FROM patienten ORDER BY nachname ASC;
Die obige Zeile bringt einen der Lösung bereits ein wenig nahe. Man müsste nun nur
noch die Liste durchgehen und bei gleichen Namen die Zeilen zusammenzählen.
In SQL gruppiert man nun gleiche Zeilen zu einer.
SELECT nachname FROM patienten GROUP BY nachname;
Nun hat man eine Liste aller Nachname, nicht aber deren absolute Häufigkeit. Man
muss noch die Zeilen mit gleichem Namen zählen. Das geht mit der COUNT(...)Funktion.
SELECT nachname, COUNT(nachname) FROM patienten GROUP BY nachname;


In Excel heißen die Spalten jetzt nachname und COUNT(nachname). Die
zweite Spalte sollte besser haeufigkeit heißen. Wandle die Abfrage ab!
In der Datenbank Sponsorenlauf könnte man sich nun dafür interessieren, wie
oft die Schüler 0 Runden, 1 Runde, 2 Runden, ... gelaufen sind.
In der neuen Datenbank wetter wäre es mal interessant, wie viele Datensätze zu
den einzelnen Tagen vorliegen. Um aus der Datumsangabe einzelne Tage
herausfischen zu können benötigt man Datumsfunktionen (siehe auch Google: mysql
referenzhandbuch -> Datumsfunktionen). Hier passt die DATE(...)-Funtion. Sie
macht aus einem Datum mit Zeitangabe einfach ein Datum.
 Lass dir aus der wetter-Datenbank angeben, wie viele Datensätze es zu
jedem einzelnen Tag gibt.
 Lass dir angebe, wie viele Datensätze es zu allen Tagen im September gibt
(MONTH(...)-Funktion).
 Lass dir angeben, wie viele Datensätze es zu den einzelnen Monaten gibt.
 Lass dir aus der Altersheim-Tabelle angeben, wie viele Patienten jeweils die
Medikamente 1,2,3, ... nehmen.
Mit GROUP BY kann man nicht nur Zeile Zählen ( COUNT(...) ). Man kann auch
über Zeilen summieren ( SUM(...) ).
Schauen wir mal die Datenbank sponsorenlauf an.
SELECT klasse , COUNT(klasse) as schueler_pro_klasse FROM
schueler GROUP BY klasse;
Diese Abfrage liefert bereits die Anzahl der Datensätze pro Klasse, also die Anzahl
der Schüler.
Informatik 12/13
Seite 2 von 2
Erstelldatum 19.09.2007
14:10:00
Nun will man die Anzahl der Runden, die alle Schüler einer Stufe gelaufen sind.
Dazu müssen die Runden summiert werden.
SELECT
klasse,
COUNT(klasse) as schueler_pro_klasse,
SUM(runden) as gelaufene_runden
FROM schueler GROUP BY klasse;
(Diese Abfrage ist recht lang. Sie auf mehrere Zeilen zu verteilen fördert die
Übersicht.)
 Interessant wäre auch der Mittelwert, also wie viele Runden die einzelnen
Schüler im Mittel gelaufen sind. Informiere dich über die AVG(...) –
Funktion.
 Wie viele Tabletten (0,1,2,...) werden im Altersheim insgesamt genommen?
 Wetter: Wie warm war es an den einzelnen Tagen im Mittel?
Herunterladen