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 10: Rest berechnen und runden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Runden Sie alle Gehälter, die im Moment auf keinen geraden 10-Euro-Betrag enden, auf die nächsten zehn Euro auf.

Transkript

In diesem Beispiel machen wir ein letztes Update auf unsere Spalte "Gehalt" in der Personaltabelle. Nachdem wir mit dem letzten Beispiel teilweise ein Durcheinander, auch um Kommastellen und um runde Beträge unserer Gehaltsspalte, erzeugt haben, möchten wir mit diesem abschließenden Update auf das Gehalt das wieder gerade biegen. Zwar wollen wir noch einmal großzügig sein und all jene Gehälter, die nicht auf einen geraden Zehn-Euro-Betrag enden, auf die nächsten zehn Euro aufrunden. Wir sehen hier jene Gehälter, die eben auf einen unrunden Betrag, teilweise nur Eurobetrag, teilweise nur Centbetrag, enden. Aus 8917,50, ich gebe zu, das ist bereits ein fürstliches Gehalt, sollen aufgerundet 8920 werden, aus 6713 sollen 6720 werden und so weiter. das heißt jedes aufgerundet auf den nächsten vollen Betrag. Dazu müssen wir einerseits jene herausfiltern für das Update, die einen unrunden Betrag haben. Das können wir über zwei Varianten machen, entweder mit einer Modulo-Bedingung, das ist sozusagen die Division durch Zehn liefert uns nicht den Rest Null, oder das auf Zehner gerundete Gehalt ist ungleich dem aktuellen Gehalt. Eine der beiden Arten müssten Sie filtern. Aufrunden können Sie über eine entsprechende Funktion. Unter MySQL können Sie das mit der "CEILING"-Funktion ebenso beim Microsoft SQL Server erledigen. Nachdem es bei Oracle keine Aufrunden-Funktion gibt, müssen Sie mit "trunk abrunden" und danach auf die nächsten Zehner durch Addieren von Zehn quasi wieder ausfrunden. (Musik läuft) 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. Wir haben hier gesehen, welche Aufrundung hier erfolgen soll. Betrachten wir uns einmal die Möglichkeit, wie wir aufrunden beziehungsweise filtern können. Hier unter MySQL verwenden wir die Funktion "CEILING". Mit "CEILING"runden wir auf. Da aber "CEILING" keine Angabe von Kommastellen positiver oder negativer Art besitzt, sondern nur auf ganze Zahlen auf- oder abrundet, müssen wir zuerst durch Zehn dividieren, um damit auf Zehner aufzurunden, und danach wieder mit Zehn multiplizieren. Damit bekommen wir diesen Wert. Damit wir nicht alle aufrunden, sondern nur jene, die wirklich einen unrunden Zehnerbetrag haben, können wir entweder den Modulo oder mit der "ROUND"-Funktion filtern. Hier sehen Sie die Modulo-Funktion in Verwendung. Unter MySQL hat diese die Syntax "MOD" und die Funktion: Klammer auf, hier der Wert, der dividiert werden soll, und hier der Wert, durch den dividiert werden soll. Also "gehalt" dividiert durch "10". Und wenn das ungleich Null ist, dann heißt das, es gibt einen Rest und damit haben wir keinen auf Zehn Euro geraden Endbetrag. Und wenn ich diese Anweisungen ausführe, dann bekommen wir eben diese Zeilen heraus. Wahlweise könnte ich das natürlich auch anders machen. Ich habe das hier vorbereitet. Wenn das Gehalt ungleich dem auf ganze Zehner gerundeten Gehalt ist, dann handelt es sich um ein solches Gehalt. Das muss natürlich in beiden Fällen dasselbe Ergebnis liefern. Und genau das können wir jetzt in unserem Update verwenden. Wir sehen hier die "UPDATE"-Anweisung, Das Gehalt wird mit diesem Ausdruck, den wir schon hier verwendet haben, aufgerundet und eine der beiden Varianten, in dem Fall jene mit der "ROUND"-Funktion, habe ich hier in der "WHERE"-Klausel verwendet. Nun führe ich diese "UPDATE"-Anweisung aus und wir sehen, dass wir 13 Zeilen geändert haben. Zur Kontrolle verwende ich diese Anweisung, um zu zählen, wie viele es jetzt gibt mit einem nicht auf ganze Zehn Euro gerundetem Gehalt. Hier muss jetzt eigentlich, nachdem wir alle angepasst haben, Null herauskommen. Ich führe diese Anweisung aus und wir sehen tatsächlich: Null sind der Fall. Das heißt, das Ganze hat funktioniert und ich bestätige die Transaktion mit einem "COMMIT". Wir haben also die "CEILING"-Funktion unter MySQL für das Aufrunden verwendet und die "MOD"-, die Modulo-Funktion, für das Filtern, wahlweise "ROUND". Wie sieht das Ganze nun unter Oracle aus? Wir sehen jetzt hier, die entsprechenden Beträge. Die Sortierung ist eine andere, deshalb haben wir ein anderes Ergebnis, zum Beispiel 3177,50 soll auf 3180 aufgerundet werden, 2912 auf 2920 und so weiter. Was hier ident ist, wie unter MySQL, ist die Syntax der Modulo-Funktion, die wir hier verwenden können, um zu filtern. Ebenso hat die "ROUND"-Funktion dieselbe Syntax und könnte alternativ auf dieselbe Art und Weise eingesetzt werden. Aufrunden müssen wir bei Oracle, indem wir zunächst einmal abrunden. Mit der Funktion "TRUNC" schneiden wir ab, TRUNC wie "abschneiden", truncate. Wir müssen aber hier nicht durch Zehn dividieren, sondern können direkt über den Parameter "-1" definieren, dass auf eine Vorkommastelle, also auf ganze Zehner abgeschnitten werden soll. Nachdem wir aufrunden möchte, müssen wir anschließend wieder Zehn addieren. Das ist generell bei Oracle so, dass es eben keine eigene Aufrunden-Funktion gibt, das heißt wir müssen immer abrunden plus die Einheit dazurechnen, die zum Aufrunden führt. Und wieder setzen wir genau das in einem Update um. Diesen Ausdruck weisen wir der Spalte "Gehalt" zu, um es aufzurunden. 13 Zeilen sind es auch hier, die momentan noch nicht auf Zehn Euro gerade enden. Ich führe die Anweisung aus. Wir sehen die Meldung "13 Zeilen aktualisiert". Und auch hier prüfen wir das Ergebnis mit einem "COUNT". Und auch hier bekommen wir, wie erwartet, Null heraus. das heißt, das Update hat funktioniert. und wir können es mit einem "COMMIT" festschreiben. Also, "truncate" verwenden wir bei Oracle, um abzurunden und danach über Addition wieder aufzurunden, und "ROUND" oder eben die Modulo-Funktion der gleichen Syntax wie unter MySQL. Wenden wir uns zum Abschluss noch dem Microsoft SQL Server zu. Auch hier haben wir die Datensätze für uns, die noch geändert werden müssen. 13 Stück sind es auch hier. Wir haben jetzt eine interessante Mischform. Die Modulo-Funktion hat zwar eine andere Syntax, als unter MySQL und Oracle gesehen, dafür hat die "CEILING"-Funktion wieder die gleiche Syntax, wie unter MySQL. Also diese "CEILING"-Funktion rundet auf und auch hier wieder nur auf ganze Zahlen, deshalb verwenden wir hier zuerst die Division durch Zehn, um das Ergebnis danach wieder mit Zehn zu multiplizieren. Wenn wir "ROUND" verwenden zum Filtern, hat das die gleiche Syntax auf einen Zehner genau mit dem Parameter "-1", wie wir unter MySQL und Oracle gesehen haben. Die Modulo-Funktion hat unter dem Microsoft SQL Server folgende Syntax: Ich habe hier den Wert, den ich dividieren möchte, dann verwendet man das Prozentzeichen, gefolgt vom Wert, durch den man dividiert. Das heißt in dem Fall "gehalt%10". Und wenn dieser Wert ungleich Null ist, dann gibt es einen Rest und dann wollen wir diese auswählen, diese 13. Und auch hier bauen wir das Ganze wieder in eine "UPDATE"-Anweisung ein, das heißt "CEILING" verwenden wir für Zuweisung des neuen Wertes und eine der beiden Varianten in der "WHERE"-Klausel, hier wieder die "ROUND"-Funktion, und ich führe diese Anweisung aus. Abschließend prüfen wir auch hier und sehen, dass es nun keine unrunden Gehaltsbeträge mehr gibt. Wir haben also mit diesem Update gesehen, wie wir unter den drei Systemen aufrunden können, entweder mit der Funktion "CEILING" beziehungsweise "TRUNC" oder wie wir die Modulo-Funktion insetzen können. "MOD" ist der Funktionsname unter MySQL und Oracle und der Prozentoperator wird für Modulo unter dem Microsoft SQL Server verwendet.

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!