Gruppen zählen und filtern
Gruppen finden, die einen Schwellenwert erfüllen – die klassische Frage nach Kunden mit mehr als N Bestellungen
Gruppen zählen und filtern ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Die häufigste Frage zur Gruppierung
„Finden Sie Kunden mit mehr als N Bestellungen“ ist die klassische GROUP-BY-Aufgabe im Interview. Varianten kommen ständig vor: Produkte, die mehr als X-mal verkauft wurden, Abteilungen mit mindestens Y Mitarbeitern oder Tage mit mehr als Z Anmeldungen.
Jede dieser Aufgaben folgt demselben Muster: gruppieren, zählen und die Gruppen anschließend mit HAVING filtern.
Schritt eins: Pro Gruppe zählen
Beginnen Sie damit, die Zeilen innerhalb jeder Gruppe zu zählen. Gruppieren Sie nach dem Schlüssel, der einen „Kunden“ oder ein „Produkt“ definiert, und wenden Sie anschließend COUNT(*) an.
Damit erhalten Sie eine Zeile pro Gruppe mit ihrer Größe. Sie haben noch nicht gefiltert, sondern nur jede Gruppe vermessen.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id;Schritt zwei: Mit HAVING filtern
Behalten Sie nun nur die Gruppen, die den Schwellenwert erfüllen. Die Bedingung bezieht sich auf ein Aggregat und muss daher in HAVING stehen, nicht in WHERE.
Lesen Sie die Abfrage so: „Gruppieren Sie Bestellungen nach Kunden und behalten Sie anschließend die Kunden, deren Anzahl größer als fünf ist.“ Das ist die vollständige Antwort auf die klassische Aufgabenstellung.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 5;Distinct zählen oder alle Werte zählen
Achten Sie genau auf die Formulierung. „Kunden, die mehr als 3 verschiedene Produkte bestellt haben“ erfordert COUNT(DISTINCT product_id), nicht COUNT(*).
COUNT(*)zählt die Zeilen in der Gruppe.COUNT(DISTINCT col)zählt eindeutige Werte, die nicht NULL sind.
Interviewer bauen „verschieden“ oder „eindeutig“ in die Aufgabenstellung ein, um zu prüfen, ob Sie zu DISTINCT greifen.
SELECT customer_id, COUNT(DISTINCT product_id) AS distinct_products
FROM orders
GROUP BY customer_id
HAVING COUNT(DISTINCT product_id) > 3;Nach SUM statt nach COUNT filtern
Dieselbe Struktur funktioniert auch für Summen. „Kunden, die insgesamt mehr als 1000 ausgegeben haben“ gruppiert nach Kunden und filtert nach SUM(amount).
Jedes Aggregat kann die HAVING-Bedingung bestimmen: COUNT, SUM, AVG, MAX oder MIN. Wenn Sie die Kennzahl in der Aufgabenstellung erkennen, wissen Sie, nach welchem Aggregat Sie filtern müssen.
SELECT customer_id, SUM(amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;Mehrere Gruppenbedingungen
HAVING kann Bedingungen mit AND/OR verknüpfen, auch wenn diese sich auf verschiedene Aggregate beziehen. „Kunden mit mehr als 5 Bestellungen UND einem durchschnittlichen Bestellwert über 100“ ist eine einzige HAVING-Klausel.
Jede Bedingung verweist auf ihr eigenes Aggregat; alle werden nach der Gruppierung ausgewertet. Das zeigt, dass Sie komplexe Geschäftsregeln klar ausdrücken können.
SELECT customer_id,
COUNT(*) AS orders,
AVG(amount) AS avg_order
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 5 AND AVG(amount) > 100;WHERE und HAVING kombinieren
Oft müssen Sie Zeilen vor dem Zählen filtern. „Unter den Bestellungen aus diesem Jahr Kunden mit mehr als 5 Bestellungen“ verwendet WHERE für das Datum und HAVING für die Anzahl.
WHERE verkleinert zunächst die Zeilenmenge, danach werden die Gruppierung und der HAVING-Schwellenwert angewendet. Beide Klauseln in einer Abfrage korrekt einzusetzen, signalisiert Kenntnisse auf mittlerem Niveau.
SELECT customer_id, COUNT(*) AS orders_this_year
FROM orders
WHERE order_date >= '2024-01-01'
GROUP BY customer_id
HAVING COUNT(*) > 5;Duplikate finden
Ein eng verwandter Fall ist: „Finden Sie doppelte E-Mail-Adressen.“ Gruppieren Sie nach der Spalte, die eindeutig sein sollte, und behalten Sie Gruppen mit einer Anzahl größer als eins.
Mit diesem einfachen Muster erkennen Sie doppelte Schlüssel, wiederholte Transaktionen oder jeden Wert, der häufiger vorkommt als vorgesehen. Interviewer fragen danach, um zu prüfen, ob Sie Gruppierungen als Werkzeug zum Erkennen von Duplikaten verstehen.
SELECT email, COUNT(*) AS times_seen
FROM users
GROUP BY email
HAVING COUNT(*) > 1;Gruppen mit exakt der geforderten Anzahl
Schwellenwerte sind nicht immer „größer als“. „Kundinnen und Kunden mit genau einer Bestellung“ verwendet HAVING COUNT(*) = 1; „mindestens 3“ verwendet >= 3.
Achten Sie auf das Grenzwort in der Aufgabenstellung: „mehr als“, „mindestens“, „genau“, „weniger als“. Jedem dieser Wörter entspricht ein anderer Vergleichsoperator, und in Interviews wird diese Genauigkeit geprüft.
-- One-time customers
SELECT customer_id, COUNT(*) AS orders
FROM orders
GROUP BY customer_id
HAVING COUNT(*) = 1;Nur die Schlüssel zurückgeben
Manchmal verlangt die Aufgabenstellung nur die passenden IDs, nicht die Anzahl, häufig als Eingabe für eine weitere Abfrage. Sie gruppieren und filtern weiterhin, wählen aber nur den Schlüssel mit SELECT aus.
Anschließend können Sie dies in eine IN-Unterabfrage einbetten oder mit einem Join verknüpfen, um vollständige Datensätze für diese Kundinnen und Kunden abzurufen. Dieses Zusammensetzen von Abfragen ist ein Zeichen für fortgeschrittene SQL-Kenntnisse.
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 5;Interview-Leitfaden
Für jede Frage zu „Gruppen, die einen Schwellenwert erfüllen“ gehen Sie laut vier Schritte durch: (1) Gruppierungsschlüssel identifizieren, (2) Aggregatmaß auswählen, (3) Vergleichsoperator anhand der Formulierung bestimmen, (4) Zeilenfilter in WHERE und den Aggregatfilter in HAVING setzen.
Mit diesem Schema lösen Sie die gesamte Klasse von Problemen, bei denen gezählt und gefiltert wird.
Schnelltest
Wählen Sie die richtige Abfrage für die Aufgabenstellung aus.
Zusammenfassung
Muster: Gruppieren Sie nach dem Schlüssel, aggregieren Sie und filtern Sie Gruppen mit HAVING. Damit lösen Sie Fragen wie „mehr als N Bestellungen“, „Kundinnen und Kunden mit den höchsten Ausgaben“, Duplikate und Kunden mit nur einer Bestellung.
- Verwenden Sie
COUNT(*)für Zeilen undCOUNT(DISTINCT col)für eindeutige Werte. - Stimmen Sie den Vergleichsoperator auf die Formulierung der Aufgabe ab.
- Zeilenfilter gehören in WHERE, Aggregatfilter in HAVING.
- Wählen Sie nur den Schlüssel aus, um ihn in eine IN-Unterabfrage oder einen Join einzuspeisen.
Häufig gestellte Fragen
Ist die Lektion „Gruppen zählen und filtern“ kostenlos?
Ja — der vollständige Text von „Gruppen zählen und filtern“ 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 „Gruppen zählen und filtern“?
Gruppen finden, die einen Schwellenwert erfüllen – die klassische Frage nach Kunden mit mehr als N Bestellungen 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 4 von 4.
Wie lange dauert die Lektion „Gruppen zählen und filtern“?
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
- Die GROUP-BY-Regel für SELECT-Spalten
- HAVING oder WHERE
- Nach mehreren Spalten und Ausdrücken gruppieren
- Gruppen zählen und filtern