Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 8: Bedingungen und Kriterien

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Erhöhen Sie die Gehälter der Verkäufer (VK) um 3,75% und runden Sie die Erhöhung dabei auf ganze Euro. Einerseits sollen alle mindestens eine Erhöhung um 50 Euro bekommen und andererseits soll diese auf 100 Euro gedeckelt werden.

Transkript

In diesem Übungsbeispiel in diesem Video geht es um Bedingungen bei einem Update. Wir möchten hier die Gehälter aller Verkäufer um 3,75 Prozent erhöhen. Außerdem soll der Wert dabei auf ganze Euro gerundet werden. Verkäufer sind all jene, deren Abteilung das Kürzel "VK" trägt. Das ist einmal die erste Bedingung. Das heißt wir wollen filtern, es sollen nicht alle Mitarbeiter, die in der Tabelle "personal" gespeichert werden, geändert werden. Allerdings wollen wir auch nicht fix eine einheitliche Erhöhung vornehmen, sondern diese ist an Bedingungen geknüpft. Und zwar soll die Erhöhung mindestens 50 Euro betragen, für alle die aufgrund der Prozenterhöhung weniger bekommen würden, wie wir bei diesen beiden Sätzen hier sehen. Andererseits soll sie auch auf 100 Euro gedeckelt werden, d. h. diejenigen, die eine höhere Erhöhung bekommen würden, sollen lediglich hundert Euro erhalten, wie wir an diesen beiden Beispieldatensätzen sehen. Das heißt wir haben in diesem Beispiel einerseites eine Bedingung im Sinne einer Filterung ... welche Datensätze sollen geändert werden? Nämlich nur jene der Verkäufer ... und dann auch eine Bedingung innerhalb der Änderung. Ein Tipp an dieser Stelle: Um diese Aufgabenstellung mit der Bedingung zu lösen, benötigen Sie ein CASE. 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 für dieses Beispiel. Wie erwähnt, benötigen wir ein CASE. Mit *CASE kann ich in ANSI SQL Bedingungen umsetzen. Wenn die Bedingung erfüllt ist, dann soll das passieren, wenn die nächste Bedingung erfüllt wird, dann ... und optional kann es auch ein ELSE geben, einen Sonstfall, der eintritt wenn keine der Bedingungen erfüllt ist. In unserem Fall haben wir folgende Varianten. Beträgt der Erhöhungsbetrag weniger als 50 Euro, dann solle er 50 betragen. Deshalb nehmen wir folgenden Ausdruck. Wir ändern die Tabelle "personal" "SET gehalt = gehalt", d. h. wir nehmen das alte Gehalt, "+" und jetzt kommt die Erhöhung mit der Bedingung, "CASE WHEN", die erste Bedingung "gehalt * 0,0375", das wäre die 3,75 prozentige Erhöhung, auf ganze Euro gerundet, ROUND Und wenn das kleiner als 50 ist, dann soll der Fixbetrag von 50 Euro zum Gehalt dazugerechnet werden. Die zweite Bedingung besagt, wenn dieses Gehalt, d. h. der gleiche Ausdruck, wenn dieser größer als 100 ist, d. h. den Betrag von 100 übersteigt, dann soll dieser Fix um 100 erhöht werden. Und der dritte Fall, das ist der normale Fall, den kann ich gleich über das ELSE abschließen, denn wenn keine der Bedingungen erfüllt ist, ist automatisch die dritte erfüllt, "ROUND (gehalt * 0,0375, 0)". Das heißt, das ist jetzt der eigentliche Prozentbetrag, der hier dazugerechnet wird, d. h. zum Gehalt kommt entweder der Wert, der Wert, der Wert oder der Wert dazu, und das ist dann die Erhöhung. Damit wir generell nur jene berücksichtigen, die in der Abteilung Verkauf arbeiten, brauchen wir die WHERE-Klausel "WHERE abtlg = 'VK' ". Und damit nehmen wir die Änderung wie gewünscht vor. Wenn Sie möchten, können Sie das Ganze in einer Transaktion starten, damit wir gegebenenfalls auch zurückrollen können. Ich starte die Transaktion und nehme jetzt das Update vor. Vielleicht werfen wir vorher zum Vergleich noch einmal einen Blick in die Daten mit dieser vorbereiteten Anweisung. Und wir sehen z. B. in der ersten Zeile eine Erhöhung um "100" Euro auf "2790", in der zweiten Zeile eine Erhöhung um "50" auf "810" und in der dritten um "93" auf "2573". Merken wir uns diese Werte, weil die müssen dann am Ende hier in dieser vorderen Spalte ersichtlich sein. Die Transaktion ist schon gestartet, also führe ich nun das Update aus. Sechs Zeilen sind von der Änderung betroffen. Und gleich kontrollieren wir mit dieser Anweisung das Ergebnis. Und hier haben wir jetzt die drei Werte wie zuvor beschrieben. Die Erhöhung auf "2790", "810" und "2573", d. h. die Erhöhung ist wie gefordert durchgeführt worden. Wenn das so passt, können wir diese Änderung mit einem COMMIT festschreiben. Man muss bei einem Update also überprüfen, beziehen sich Bedingungen darauf, wen ändere ich, dann muss ich das über die WHERE-Klausel abbilden. Beziehen sich Bedingungen auf den Inhalt der Änderung, dann muss ich das meist mit einer Bedingung, in diesem Fall mit CASE, ausdrücken. Diese Anweisung ist 100 Prozent ANSI-konform, deshalb finden Sie in MySQL oder bei Oracle exakt dieselbe Umsetzung für diese Lösung.

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!