Menu
Coddy logo textTech

Subqueries Part 2

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 39 von 72.

Es gibt drei Hauptarten von Subqueries:

  1. Skalare Unterabfragen – Liefert einen einzelnen Wert zurück (eine Zeile, eine Spalte)
  2. Zeilen-Unterabfragen – Liefert eine einzelne Zeile mit mehreren Spalten zurück
  3. Tabellen-Unterabfragen – Liefert mehrere Zeilen und Spalten zurück

Hier sind zum Beispiel einige Anwendungsfälle für jeden Subquery-Typ:

Skalare Subquery - Finden Sie Mitarbeiter, die mehr als das durchschnittliche Gehalt verdienen:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Zeilen-Unterabfrage - Finde Mitarbeiter mit demselben department und salary wie Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Tabellen-Subqueries - Abteilungen und deren Mitarbeiteranzahl anzeigen

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Beachten Sie die Anwendungsfälle:

  • Skalar - Einfache Vergleiche (>, <, =)
  • Wenn Sie nach mehreren Spalten filtern müssen
  • Wenn Sie ein Abfrageergebnis abfragen müssen
challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • shop: price, quantity, category, list_date

Finde Kategorien, bei denen die Gesamtsumme ihrer quantity größer ist als der Durchschnitt aller quantity-Werte im shop.

Wichtig: Du musst eine Unterabfrage innerhalb der HAVING-Klausel verwenden, um den Durchschnitt zu berechnen. Verwende keinen fest kodierten Wert und keine separate Abfrage — die Unterabfrage sollte AVG(quantity) aus der Tabelle shop direkt innerhalb von HAVING berechnen.

Schritte zur Lösung:

  1. Schreibe zuerst eine Unterabfrage, die den Durchschnitt aller quantity-Werte im shop berechnet: SELECT AVG(quantity) FROM shop
  2. Summiere dann für jede category die quantity-Werte und vergleiche sie mithilfe des Schlüsselworts HAVING mit dieser Unterabfrage

Probier es selbst

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen