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 8: Filtern auf numerische Spalte

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Welche Artikel der Gruppen Garten und Heimwerken weisen einen Deckungsbeitrag über 50 Euro auf? Sortieren Sie das Ergebnis aufsteigend nach dem Deckungsbeitrag.

Transkript

Mit diesem Video starten wir die Übungen zur WHERE-Klausel. Für dieses Beispiel benötigen wir die Artikel-Tabelle, und es geht dabei darum, aus den beiden Gruppen Garten und Heimwerken, es sind die Kürzel GA und HW, jene Artikel herauszufiltern, die einen Deckungsbeitrag über 50 Euro aufweisen. Wie ist das zu verstehen? Sie sehen hier das Wunschergebnis, wir haben hier die Artikelnummer (artnr), bezeichnung und das Kürzel der Artikelgruppe, den Einkaufspreis (ekpreis) so wie er in der Tabelle steht, und den Verkaufspreis (vkpreis). Der Einkaufspreis ist der Nettopreis, Verkaufspreis ist der Bruttopreis. Der Mehrwertsteuersatz (mwst) von 19 Prozent wird hier ebenso in der Spalte Mehrwertsteuer angezeigt. Was muss also getan werden? Der Deckungsbeitrag, den Sie hier sehen, wird berechnet aus dem Bruttoverkaufspreis minus der Mehrwertsteuer, das heißt die Mehrwertsteuer muss herausgerechnet werden, damit wir zum Nettoverkaufspreis kommen, und dann noch der Einkaufspreis, der braucht nicht mehr um die Mehrwertsteuer reduziert werden, der ist bereits netto abgezogen. Das was hinten herauskommt ist der Deckungsbeitrag. Und dieser Deckungsbeitrag, ich habe die Spalte hier noch mit dem Aliasnamen db versehen, soll mindestens 50 Euro betragen. einen Tipp noch - achten Sie darauf, dass Sie in der WHERE-Klausel keine Aliasnamen verwenden können, und achten Sie vor allem auf die Priorität von und und oder und ob Sie bei mehreren Bedingungen hier eine Klammer setzen müssen oder nicht. 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 zu diesem Beispiel. Sie ist bei allen drei Systemen fast ident. Ich habe hier das Statement: SELECT artnr, bezeichnung, gruppe, ekpreis, vkpreis und mwst, um diese ersten Spalten einfach einmal eins zu eins auszugeben. Um den Nettoverkaufspreis zu berechnen, verwende ich den Ausdruck (vkpreis / (100 + mwst) * 100), damit kommen wir auf den Nettoverkaufspreis, minus Einkaufspreis ergibt den Deckungsbeitrag (- ekpreis AS db) den wir hier herausbekommen. Nun soll dieser Deckungsbeitrag größer als 50 Euro ( 50) sein. Da wir den db, den Aliasnamen, in der WHERE-Klausel nicht verwenden können, müssen wir den gesamten Ausdruck, so wie er ist, in die WHERE-Klausel kopieren, also: WHERE (vkpreis / (100 + mwst) * 100) - ekpreis der muss 50. Zusätzlich muss die Artikelgruppe entweder 'GA' oder 'HW' enthalten, denn nur diese zwei wollen wir hier bekommen. Wenn ich diese Bedingungen mit Und (AND) ergänze, müssen wir darauf achten, dass das Oder (OR) zwischen (gruppe = 'GA' OR gruppe = 'HW') schwächer ist, als dieses Und (AND). Um also die richtige Bedeutung in Priorität zu verwenden, müssen wir diesen Teil in runde Klammern setzen, damit wirkt das Und (AND) hier schwächer als dieses Oder (OR), das heißt auf jeden Fall müssen die Artikel einer dieser beiden Gruppen angehören. Und wenn ich diese Anweisung ausführe, bekommen wir 35 Zeilen als Treffer. Wir haben jetzt nun mehr jene aus den zwei Artikelgruppen, HW und GA, Sie sehen es taucht hier keine andere mehr auf, und den Deckungsbeitrag, ich habe nach dem Aufsteigen sortiert, das funktioniert ja mit dem Aliasnamen, weisen alle einen Wert über 50 Euro auf. Wie hätten wir die Priorität auch anders lösen können? Wir hätten hier, an Stelle von (gruppe = 'GA' OR gruppe = 'HW'), auch den Operator IN einsetzen können. AND gruppe IN ('GA' , 'HW') bewirkt in dem Fall, das wir ja nur zwei Bedingungen haben, die wir mit Und (AND) verknüpfen, und deshalb müssten wir hier gar keine Klammern mehr verwenden. Das heißt, in dieser Variante, an Stelle dieser zwei Bedingungen eine Bedingung, mit dem anderen Operator bekommen wir dasselbe Ergebnis. Wenn wir hier allerdings mit Oder (OR) arbeiten, müssen wir eben auf die Priorität achten, und diesen Teil hier in Klammern setzen. Diese Anweisung ist beinahe ident unter MySQL. Der Unterschied bezieht sich lediglich auf eine kleine optische Sache, auch hier die idente Anweisung, damit ich hier nur zwei Nachkommastellen durch die Berechnung mit dem Prozentsatz bekomme, habe ich hier zusätzlich die ROUND-Funktion noch ergänzt, um das Ergebnis auf zwei Nachkommastellen zu runden - und sonst die idente Anweisung. Auch hier können Sie wahlweise entsprechend die Anweisung mit IN verwenden, dann brauche ich hier keine Klammern mehr, da die Priorität passt, und diese Anweisung liefert mir dasselbe Ergebnis. Sehe ich hier, hat sich hier ein kleiner Fehler hier eingeschlichen - das lösche ich hier noch weg, und führe diese Anweisung aus und hier haben wir unsere 35 Treffer. Auch unter Oracle kommen wir zum selben Ergebnis, auch hier habe ich die ROUND-Funktion verwendet. Auf eine Kleinigkeit möchte ich hier abschließend noch hinweisen, eventuell verwenden Sie bei Oracle die UPPER-Funktion, wenn Sie nicht sicher sein können, dass die Kürzel der Artikelgruppe immer in Großbuchstaben geschrieben sind. Damit nivellieren wir, weil Oracle unterscheidet ja standardmäßig zwischen Groß- und Kleinschreibung. Anstelle von AND gruppe IN('GA' , 'HW') in Großbuchstaben, verwenden wir hier AND UPPER von (gruppe) IN, damit können wir auch bei gemischter Schreibweise sicherstellen, dass das Ergebnis immer so funktioniert, wie wir das uns vorstellen, und wir bekommen hier dieselben 35 Treffer wie auch bei den anderen beiden Systemen. Achten Sie also bei Und (AND) und Oder (OR) kombiniert in der WHERE-Klausel, dass Und eine höhere Bindung hat als Oder. Wenn eine höhere Bindung beim Oder gefordert wird, von der Angabe her, müssen Sie dieses in runde Klammern setzen.

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!