Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 16: Gruppierung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Berechnen Sie den Durchschnittspreis und die Anzahl an Artikeln je Artikelgruppe, bei denen der Verkaufspreis mindestens 40 Euro beträgt. Sortieren Sie das Ergebnis absteigend nach dem berechneten Durchschnittspreis und runden Sie diesen auf ganze Euro.

Transkript

In diesem Video wollen wir das Verwenden von Gruppierungen und Gruppenfunktionen üben. Es geht darum, den Durchschnittspreis von Artikeln zu berechnen und zwar nur für jene, bei denen der Verkaufspreis, das ist hier die Spalte VKPREIS in der Artikeltabelle, mindestens 40 beträgt. Alle die darunter liegen, wollen wir nicht berücksichtigen. Außerdem möchten wir, dass der Durchschnittspreis auf ganze Euro gerundet wird und eben je Artikelgruppe gebildet wird. Sechs Datensätze werden dabei herauskommen. Eine Artikelgruppe, nämlich die Artibelgruppe Besteck, BE, wird im Ergebnis fehlen, denn sie hat keinen einzigen Artikel, der mehr als 40 Euro kostet. In einer zweiten Entwicklungsstufe schränken Sie dann auf jene Artikelgruppen ein, bei denen in diesem Preissegment mindestens 30 Stück vorhanden sind. Das heißt, die Artikelgruppe HW, das steht für Heimwerken, die Artikelgruppe, GE, das steht für Geschirr, wird dann aus dem Ergebnis herausfallen. Pausieren Sie nun das Video und lösen Sie die Aufgabe. Wenn Sie damit fertig sind, fahren Sie mit dem Video fort und sehen Sie sich meine Musterlösung an. Betrachten wir uns nun die Lösung hier mit Oracle. Was wir hier brauchen ist eine Gruppierung. Wir wollen ja den Durchschnittspreis je Artikelgruppe bilden und wenn in der Anforderung je, nach, pro als Reizwörter enthalten sind, wissen wir schon, wir benötigen eine Gruppierung. Ich verwende also die Spalte Gruppe, die enthält das Kürzel der Artikelgruppe in der SELECT Klausel, und gebe diese in die GROUP BY Klausel. Damit nur jene Artikel berücksichtigt werden, die mehr als oder mindestens in dem Fall, 40 Euro kosten, haben wir hier eine WHERE Klausel WHERE vkpreis=40 Von der Reihenfolge muss natürlich die WHERE Klausel immer vor der GROUP BY Klausel kommen. Ist auch logisch insofern, denn wir müssen immer erst wissen, wer ist überhaupt mit dabei, bevor wir Gruppen bilden. Damit wir zum Durchschnittspreis und zur Anzahl der Artikel kommen, brauchen wir zwei Spalten mit Gruppenfunktionen. Einmal AVG, Average für den Durchschnittspreis und einmal COUNT, die Anzahl, um eben die Anzahl zu eruieren. Mit AVG vom Verkaufspreis bilden wir den Durchschnittspreis und danach runden wir mit der ROUND Funktion den erhaltenen Durchschnittspreis. Er heißt Durschschnittspreis als Aliasname, damit das auch hier aufscheint. Um zu zählen könnte ich jetzt COUNT (*) verwenden, das ist etwas kürzer und weniger Tipparbeit. Man hätte natürlich auch COUNT Artikelnummer oder COUNT vkpreis, also jede Spalte, die keine NIL Werte enthält, hätten wir hier verwenden können. Aber ich bin schreibfaul, deswegen verwende ich, wenn möglich, COUNT(*) AS artikel, das ist eben die Anzahl der Artikel, so viele gibt es davon. Um absteigend nach dem Durchschnittspreis zu sortieren, verwende ich hier die ORDER BY Klausel, ORDER BY und da kann ich den Aliasnamen einsetzen, Durschschnittspreis descending. Und diese Anweisung liefert uns damit diese 6 Zeilen zurück. In einer zweiten Ausbaustufe wollen wir nun auf jene Artikelgruppen einschränken, für die es mindestens 30 Stück, oder mehr als 30 Stück habe ich hier angegeben in diesem Preissegment gibt. Das können wir gar nicht mit der WHERE Klausel machen. Warum? Weil die Stückanzahl bezieht sich ja auf eine Ergebnis der Gruppierung. Und die WHERE Klausel passiert ja schon vor der Gruppenbildung. Das heißt, was wir benötigen ist die HAVING Klausel und die HAVING Klausel ist ja eine zweite WHERE Klausel quasi, die nach der Gruppierung für gruppierte Werte eingesetzt werden kann. Die ganze Anweisung ist hier gruppiert. Lediglich diese Zeile ist dazugekommen, nämlich HAVING COUNT (*) 30 Das heißt, diese Anzahl soll größer als 30 sein und wenn ich die Anweisung ausführe, bekommen wir nunmehr 4 Zeilen, weil die zwei Artikelgruppen für die diese Bedingung nicht erfüllt ist, aus dem Ergebnis herausgefallen sind. Wenn wir gruppieren, müssen wir auf Folgendes achten: die WHERE Klausel muss immer vor der GROUP BY Klausel kommen. Wollen wir nach der Gruppenbildung noch weiter filtern, benötigen wir dafür die HAVING Klausel. In der HAVING Klausel kommen typischer- weise immer Gruppenfunktionen zum Einsatz. Außerdem müssen wir beim Einsatz von Gruppenfunktionen darauf achten, dass alle Spalten, die in der SELECT Klausel vorkommen, in unserem Fall die Spalte Gruppe, und nicht mit einer Gruppenfunktion versehen sind, wie die anderen beiden, unbedingt in der GROUP BY Klausel enthalten sind. Sonst bekommen wir einen Fehler. # Diese Anweisung ist absolut ANSI konform und unterscheidet sich bei den anderen beiden Datenbankmanagementsystemen in der Ausführung nicht

SQL Grundkurs 2: Aufgaben und Lösungen

Vertiefen Sie Ihre SQL-Kenntnisse. In diesem Workshop erhalten Sie zahlreiche Beispielaufgaben, die Sie selbst lösen können. Anschließend zeigt Ihnen der Trainer die Lösung.

7 Std. 41 min (61 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieses Training setzt SQL-Kenntnisse voraus, wie sie beispielsweise in „SQL lernen und anwenden“ vermittelt werden.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!