Lass uns in die Welt der Extreme in Daten eintauchen – das Suchen nach minimalen und maximalen Werten. Keine Sorge, SQL zwingt dich nicht, etwas völlig Neues zu lernen, aber wir checken, wie man die größten und kleinsten Werte in Tabellen findet. Diese Funktionen sind überall am Start: vom Auswerten der IMDb-Filmratings bis zum Berechnen der minimalen Temperatur auf dem Mars.
MIN() und MAX() sind Aggregatfunktionen, die den minimalen bzw. maximalen Wert aus einem Datensatz zurückgeben. Sie funktionieren wie freundliche Extremwertjäger: MIN() sucht das kleinste Element, MAX() dagegen das größte. Und das geht nicht nur mit Zahlen: Du kannst auch minimale und maximale Strings oder Daten suchen.
-- Allgemeine Form von MIN und MAX
SELECT
MIN(column_name) AS min_value,
MAX(column_name) AS max_value
FROM table_name;
Easy und simpel! Jetzt schauen wir uns an, wie diese Magie in verschiedenen Szenarien läuft.
Syntax und Basic-Beispiele
Numerische Daten
Angenommen, wir haben eine Tabelle employees mit einer Spalte für die Gehälter der Mitarbeiter (salary).
Wir wollen das minimale und maximale Gehalt wissen.
Tabelle employees
| id | name | salary |
|---|---|---|
| 1 | Anna Song | 45000 |
| 2 | Otto Art | 30000 |
| 3 | Maria Chi | 120000 |
| 4 | Alex Lin | 90000 |
| 5 | Eva Tan | 60000 |
-- Beispiel für numerische Daten
SELECT
MIN(salary) AS min_salary,
MAX(salary) AS max_salary
FROM employees;
Ergebnis
| min_salary | max_salary |
|---|---|
| 30000 | 120000 |
Textdaten
Du kannst MIN() und MAX() auch mit Textdaten nutzen.
Sie werden alphabetisch verglichen (ja, sogar Buchstaben können "am kleinsten" oder "am größten" sein).
Stell dir vor, wir haben eine Tabelle students, in der die Spalte name die Namen der Studierenden enthält.
Tabelle students
| id | name |
|---|---|
| 1 | Anna |
| 2 | Otto |
| 3 | Maria |
| 4 | Ben |
| 5 | Zoe |
-- Beispiel für Textdaten
SELECT
MIN(name) AS first_name_in_order,
MAX(name) AS last_name_in_order
FROM students;
Ergebnis
| first_name_in_order | last_name_in_order |
|---|---|
| Anna | Zoe |
Datum und Zeit
Wir suchen das früheste und späteste Datum aus der Tabelle events.
Tabelle events
| id | event_name | event_date |
|---|---|---|
| 1 | New Year Party | 2023-01-01 |
| 2 | Summer Fest | 2023-06-15 |
| 3 | Halloween Bash | 2023-10-31 |
| 4 | Year End Gala | 2023-12-31 |
-- Beispiel für Arbeit mit Daten
SELECT
MIN(event_date) AS earliest_date,
MAX(event_date) AS latest_date
FROM events;
Ergebnis
| earliest_date | latest_date |
|---|---|
| 2023-01-01 | 2023-12-31 |
Verwendung von MIN() und MAX() in Tabellen mit NULL-Werten
Wenn es in der Spalte NULL-Werte gibt, kannst du ganz entspannt bleiben: SQL ignoriert sie bei den Berechnungen.
Das heißt, MIN() und MAX() arbeiten nur mit den "normalen" Werten.
Tabelle employees_with_null
| id | name | salary |
|---|---|---|
| 1 | Otto | 30000 |
| 2 | Maria | NULL |
| 3 | Anna | 120000 |
| 4 | John | NULL |
-- Tabelle mit NULL
SELECT
MIN(salary) AS min_salary,
MAX(salary) AS max_salary
FROM employees_with_null;
Wenn es in der Spalte salary Einträge mit NULL gibt, werden sie einfach ignoriert.
| min_salary | max_salary |
|---|---|
| 30000 | 120000 |
Aber wenn die GANZE Spalte nur aus NULL besteht, ist das Ergebnis NULL.
Beispiele für die Verwendung von MIN() und MAX() in echten Aufgaben
Bestimmung des ältesten und jüngsten Mitarbeiters
Tabelle employees
| id | name | birth_date |
|---|---|---|
| 1 | Otto | 1980-05-10 |
| 2 | Maria | 1990-11-20 |
| 3 | Anna | 1975-03-15 |
| 4 | John | 2000-08-01 |
In der Tabelle employees gibt es das Feld birth_date, das die Geburtsdaten der Mitarbeitenden speichert. Lass uns den ältesten und den jüngsten bestimmen.
SELECT
MIN(birth_date) AS oldest_employee,
MAX(birth_date) AS youngest_employee
FROM employees;
Ergebnis:
| oldest_employee | youngest_employee |
|---|---|
| 1975-03-15 | 2000-08-01 |
Verkaufsanalyse
| id | amount |
|---|---|
| 1 | 150.00 |
| 2 | 75.50 |
| 3 | 200.00 |
| 4 | 120.00 |
| 5 | 500.00 |
| 6 | 90.00 |
In der Tabelle sales gibt es das Feld amount, das die Verkaufssummen speichert. Lass uns den minimalen und maximalen Verkaufsbetrag finden.
SELECT
MIN(amount) AS smallest_sale,
MAX(amount) AS largest_sale
FROM sales;
Ergebnis der Abfrage
| smallest_sale | largest_sale |
|---|---|
| 75.50 | 500.00 |
Suche nach den allerersten und allerletzten Bestellungen
Wenn du eine Tabelle orders mit dem Feld order_date hast, kannst du easy das erste und letzte Bestelldatum rausfinden.
Originaltabelle orders
| order_id | customer_id | order_date | amount |
|---|---|---|---|
| 101 | 1 | 2023-01-15 10:23:00 | 250.00 |
| 102 | 2 | 2023-02-10 14:45:00 | 150.00 |
| 103 | 3 | 2023-01-05 09:10:00 | 300.00 |
| 104 | 1 | 2023-03-22 16:30:00 | 500.00 |
| 105 | 4 | 2023-01-25 11:00:00 | 120.00 |
SELECT
MIN(order_date) AS first_order,
MAX(order_date) AS last_order
FROM orders;
Ergebnis der Abfrage:
| first_order | last_order |
|---|---|
| 2023-01-05 09:10:00 | 2023-03-22 16:30:00 |
Besonderheiten von MIN() und MAX()
String-Vergleich: Bei Strings vergleichen MIN() und MAX() alphabetisch.
Arbeiten mit NULL: NULL wird ignoriert, wenn es andere Werte in der Spalte gibt. Aber wenn alle Werte NULL sind, ist das Ergebnis NULL.
Vergleich von Daten: SQL beachtet nicht nur das Jahr, sondern auch Monat, Tag, Stunde, Minute.
GO TO FULL VERSION