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 Coding 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 Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding 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 Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding 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 Coding 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 Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding 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 Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding 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
- Spalten projizieren und Fallstricke bei Aliasen
- Berechnete Spalten und die Rangfolge von Ausdrücken
- DISTINCT oder GROUP BY für Eindeutigkeit
- CASE-Ausdrücke in SELECT