0Pricing
SQL Interview Prep · Lektion

DISTINCT oder GROUP BY für Eindeutigkeit

Wann DISTINCT die richtige Antwort ist und wann ein Interviewer stattdessen GROUP BY erwartet

DISTINCT oder GROUP BY für Eindeutigkeit ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was DISTINCT bewirkt

DISTINCT entfernt doppelte Zeilen. Der entscheidende Punkt, den Interviewer prüfen: DISTINCT wirkt auf die gesamte ausgewählte Zeile, nicht auf eine einzelne Spalte – SELECT DISTINCT a, b entfernt also Duplikate des Paars (a, b).

SELECT DISTINCT department
FROM employees;

DISTINCT umfasst alle ausgewählten Spalten

Bei mehreren Spalten behält DISTINCT jede eindeutige Kombination – also genau eine Zeile pro unterschiedlichem Paar (department, job_title). Es gibt keine standardisierte Möglichkeit, nur eine einzelne Spalte zu deduplizieren.

SELECT DISTINCT department, job_title
FROM employees;

Was GROUP BY bewirkt

GROUP BY fasst Zeilen mit demselben Schlüssel zu einer Zeile pro Gruppe zusammen. Gruppieren Sie allein nach einer Spalte, erhalten Sie dasselbe Ergebnis wie mit DISTINCT auf dieser Spalte.

SELECT department
FROM employees
GROUP BY department;
-- equivalent to:
SELECT DISTINCT department
FROM employees;

Der eigentliche Unterschied: Aggregation

Wann unterscheiden sie sich also? Wenn Sie eine Aggregation benötigen. GROUP BY kann COUNT, SUM oder AVG pro Gruppe berechnen; DISTINCT kann das nicht. Brauchen Sie eindeutige Zeilen? DISTINCT. Brauchen Sie eine Kennzahl pro Gruppe? GROUP BY.

SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department;

DISTINCT kann nicht pro Gruppe zählen

Sie können DISTINCT nicht einfach um eine Zählung erweitern. Für „wie viele Angestellte gibt es pro Abteilung?“ ist das richtige Werkzeug immer GROUP BY mit COUNT(*) – nicht SELECT DISTINCT.

-- WRONG intent: this errors or returns one total row
-- SELECT DISTINCT department, COUNT(*) FROM employees;

-- RIGHT:
SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department;

COUNT(DISTINCT) verbindet beide Konzepte

Eine beliebte Kombination: COUNT(DISTINCT col) zählt eindeutige Werte innerhalb jeder Gruppe. Hier steht DISTINCT innerhalb der Aggregation und beantwortet die Frage: „Wie viele unterschiedlichen Jobtitel gibt es pro Abteilung?“

SELECT department,
       COUNT(DISTINCT job_title) AS distinct_titles
FROM employees
GROUP BY department;

Eindeutige Werte insgesamt zählen

Ohne GROUP BY zählt COUNT(DISTINCT col) eindeutige Werte in der gesamten Tabelle – eine klare Antwort auf die Frage: „Wie viele verschiedene Abteilungen gibt es?“

SELECT COUNT(DISTINCT department) AS n_departments
FROM employees;

-- equivalently, count the deduped subquery
SELECT COUNT(*)
FROM (SELECT DISTINCT department FROM employees) d;

Die Performance ist oft gleichwertig

Was ist schneller: DISTINCT oder GROUP BY? Bei einer einfachen Deduplizierung sind sie meist gleichwertig – die Optimierer planen beide ähnlich. Wählen Sie nach der Absicht: DISTINCT für eindeutige Zeilen, GROUP BY für Aggregationen.

DISTINCT und NULL

Wie behandelt DISTINCT NULL? Alle NULL-Werte werden als gleich betrachtet, daher werden viele NULL-Zeilen zu einer zusammengefasst. GROUP BY verhält sich genauso – NULL-Werte bilden eine einzige Gruppe.

-- If manager_id has several NULLs, this returns one NULL row
SELECT DISTINCT manager_id
FROM employees;

Postgres DISTINCT ON (Bonus)

Bonus: Postgres bietet ein nicht standardkonformes DISTINCT ON (expr), das anhand eines ORDER BY die erste Zeile pro Schlüssel behält. Portabler Code verwendet stattdessen ROW_NUMBER().

-- Postgres only: latest order per customer
SELECT DISTINCT ON (customer_id) customer_id, order_id, order_date
FROM orders
ORDER BY customer_id, order_date DESC;

DISTINCT gilt für das gesamte SELECT, nicht für eine einzelne Spalte

Eine weitere Stolperfalle: DISTINCT wirkt auf die gesamte Zeile, daher liefert SELECT DISTINCT customer_id, order_date nicht eine Zeile pro Kunde. Verwenden Sie dafür GROUP BY mit MAX oder eine Window-Funktion.

-- Does NOT give one row per customer
SELECT DISTINCT customer_id, order_date FROM orders;

-- One row per customer: latest order date
SELECT customer_id, MAX(order_date) AS last_order
FROM orders
GROUP BY customer_id;

Kurzer Test

Wählen Sie das richtige Werkzeug.

Zusammenfassung

Zusammenfassung: DISTINCT entfernt Duplikate aus ganzen Zeilen; GROUP BY fasst nach Schlüssel zusammen und ermöglicht Aggregationen. COUNT(DISTINCT col) zählt eindeutige Werte, beide behandeln NULL-Werte als einen Wert, und die Performance ist meist gleichwertig.

Häufig gestellte Fragen

Ist die Lektion „DISTINCT oder GROUP BY für Eindeutigkeit“ kostenlos?

Ja — der vollständige Text von „DISTINCT oder GROUP BY für Eindeutigkeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „DISTINCT oder GROUP BY für Eindeutigkeit“?

Wann DISTINCT die richtige Antwort ist und wann ein Interviewer stattdessen GROUP BY erwartet Du übst SQL Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. SQL Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „DISTINCT oder GROUP BY für Eindeutigkeit“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede SQL Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Spalten projizieren und Fallstricke bei Aliasen
  2. Berechnete Spalten und die Rangfolge von Ausdrücken
  3. DISTINCT oder GROUP BY für Eindeutigkeit
  4. CASE-Ausdrücke in SELECT
← Zurück zu SQL Interview Prep