CodeGym /Kurse /SQL SELF /Zahlenfunktionen in SQL: Runden, Rest, Potenz und Wurzel

Zahlenfunktionen in SQL: Runden, Rest, Potenz und Wurzel

SQL SELF
Level 8 , Lektion 3
Verfügbar

SQL ist nicht nur für Text und Tabellen da. In echten Datenbanken hast du oft mit Preisen, Mengen, Punkten, Prozenten, Koordinaten zu tun, also mit Zahlen. Stell dir vor:

  • Du berechnest Rabatte und willst den Betrag auf eine ganze Zahl runden.
  • Du willst Daten für gerade/ungerade Studenten anzeigen.
  • Du machst Analysen zu Noten und willst die Quadratwurzel der Varianz wissen.
  • Oder du baust Formeln zur Punkteberechnung mit Potenzen.

SQL kann das alles ohne externe Programmiersprachen – du kannst das direkt in deinen Abfragen mit den eingebauten mathematischen Funktionen machen. Heute schauen wir uns die sechs nützlichsten an:

  • ROUND() — Runden
  • CEIL() — Aufrunden
  • FLOOR() — Abrunden
  • MOD() — Rest bei Division
  • POWER() — Potenzieren
  • SQRT() — Quadratwurzel

* Zahlen runden: ROUND(), CEIL(), FLOOR()*

Oft musst du mit Dezimalzahlen arbeiten (zum Beispiel 4.67891) und das Ergebnis runden. Wenn du z.B. eine Durchschnittsnote, den Endpreis einer Bestellung, einen Rabattprozentsatz usw. berechnest, sehen zu viele Nachkommastellen nicht nur "unschön" aus, sondern können auch verwirren.

ROUND() — Runden nach Mathe-Regeln

ROUND(number [, digits])
  • number — die Zahl, die du runden willst.
  • digits (optional) — wie viele Nachkommastellen du behalten willst.

Beispiele:

SELECT ROUND(4.67);       -- 5
SELECT ROUND(4.6789, 2);  -- 4.68

ROUND() funktioniert wie gewohnt beim Runden: 4.5 → 5, 4.49 → 4.

Sehr praktisch, wenn du mit Geld oder Punkten arbeitest, die schön angezeigt werden sollen: 4.333334.33.

CEIL() — Runden nach oben zur nächsten ganzen Zahl

SELECT CEIL(4.1);  -- 5
  • Wenn die Zahl schon ganzzahlig ist, bleibt das Ergebnis gleich.
  • Gibt immer eine ganze Zahl zurück, nicht kleiner als das Original.

Nützlich, wenn du z.B. die Seitenanzahl für die Anzeige von Produkten berechnen willst: 21 Produkte bei 10 pro Seite → du brauchst 3 Seiten.

FLOOR() — Runden nach unten

SELECT FLOOR(4.9);  -- 4
  • Gibt eine ganze Zahl zurück, nicht größer als das Original.

Wird benutzt, wenn du wissen willst, auf welcher "Etage" oder "Stufe" ein Wert liegt.

Vergleich:

Wert ROUND() CEIL() FLOOR()
4.4 4 5 4
4.6 5 5 4
-4.6 -5 -4 -5

* Rest bei Division: MOD()*

Wofür braucht man den Rest? Zum Beispiel:

  • Prüfen, ob eine Zahl gerade ist.
  • Zeilen nach Muster in Gruppen aufteilen (z.B. Verteilung auf 3 Teams).
  • Einen wiederholenden Zyklus bauen (z.B. "jeden fünften Eintrag").

Syntax:

MOD(dividend, divisor)

Beispiele:

SELECT MOD(17, 5);  -- 2  (3*5 +2)
SELECT MOD(10, 3);  -- 1  (3*3 +1)

Achtung: Das Vorzeichen des Rests hängt vom Vorzeichen des ersten Arguments (dividend) ab.

Anwendung:

SELECT student_id,
       CASE WHEN MOD(student_id, 2) = 0 THEN 'Gerade' ELSE 'Ungerade' END AS parity
FROM students;

* Potenzieren: POWER()*

Manchmal musst du nicht nur multiplizieren, sondern mathematische Formeln anwenden:

  • Zinsrechnung: base * POWER(1 + rate, years)
  • Kreisfläche: π * r^2
  • Gewichtung von Formeln im Machine Learning

Syntax:

POWER(base, exponent)

Beispiele:

SELECT POWER(2, 3);   -- 8
SELECT POWER(5, 2);   -- 25
SELECT POWER(9, 0.5); -- 3 (Quadratwurzel)

Die Funktion nimmt alle Zahlen: ganze, Dezimalzahlen, negative.

Quadratwurzel: SQRT()

Wenn du eine Wurzel berechnen musst, besonders in der Statistik (z.B. Standardabweichung), ist SQRT() dein Freund.

SELECT SQRT(25);    -- 5
SELECT SQRT(2);     -- ~1.4142

Wenn du eine negative Zahl übergibst, gibt es einen Fehler. Falls das vorkommen kann, nutze ABS():

SELECT SQRT(ABS(-25));  -- 5

Praktische Szenarien

Szenario 1: Endsumme einer Bestellung runden

SELECT order_id, ROUND(total_price, 0) AS total_rounded
FROM orders;

Szenario 2: Seitenanzahl berechnen

SELECT CEIL(COUNT(*) / 10.0) AS pages_needed
FROM products;

Szenario 3: Studenten auf 3 Gruppen verteilen

SELECT student_id,
       MOD(student_id, 3) AS group_number
FROM students;

Szenario 4: Quadratwurzel vom Mittelwert der Quadrate

SELECT SQRT(AVG(POWER(score, 2))) AS root_mean_square
FROM grades;

Typische Fehler und Tipps

ROUND() kann ein zweites Argument nehmen – vergiss das nicht, wenn du auf Hundertstel runden willst.

MOD() mit negativen Zahlen kann unerwartete Ergebnisse liefern.

POWER() und SQRT() funktionieren mit Dezimalzahlen – nutze CAST() wenn nötig.

Stell sicher, dass bei SQRT() keine negative Zahl reinkommt, sonst gibt's einen Fehler.

2
Aufgabe
SQL SELF, Level 8, Lektion 3
Gesperrt
Runden von Zahlen auf ganze Werte
Runden von Zahlen auf ganze Werte
2
Aufgabe
SQL SELF, Level 8, Lektion 3
Gesperrt
Berechnung der Kreisflächen
Berechnung der Kreisflächen
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION