Zurück zur Artikelliste Artikel
14 Leseminuten

SQL-Übungen für die Northwind-Datenbank

Beim Erlernen von SQL fällt es vielen Anfängern schwer, praktische Erfahrungen zu sammeln, die sich schließlich auf reale Szenarien übertragen lassen. Wir stellen uns dieser Herausforderung, indem wir SQL-Übungen für die Northwind-Datenbank mit Lösungen und Erklärungen präsentieren.

In diesem Artikel behandeln wir 16 Northwind-Übungen aus unserem SQL-Übungskurs Basic SQL-Praxis: A Store. Wie Sie vielleicht schon erraten haben, verwendet der Kurs die klassische Northwind-Datenbank von Microsoft. Es handelt sich dabei um eine kleine Datenbank eines Handelsunternehmens, die dazu dient, SQL-Lernenden praktische Erfahrungen zu vermitteln. Sie enthält realistische Daten für Kunden, Produkte, Lieferanten und Aufträge und ist damit ein idealer Ausgangspunkt für diejenigen, die grundlegende SQL-Kenntnisse erwerben möchten.

Täglich werden mehr Daten erzeugt, so dass Datenbanken ein Muss für die sichere und organisierte Speicherung von Informationen sind. Mithilfe von SQL (Structured Query Language) können wir Erkenntnisse aus den Daten in diesen Datenbanken gewinnen. Mit SQL können wir Daten für unsere Analysen extrahieren, analysieren und manipulieren. Das Erlernen von SQL mag sich anfangs schwierig anfühlen, doch wie bei jeder Sprache wächst die Kompetenz mit der Praxis.

Der Kurs Basic SQL-Praxis: A Store selbst bietet 169 interaktive Übungen, die eine breite Palette von SQL-Themen abdecken. Um sich mit den Inhalten des Kurses vertraut zu machen, werden wir uns Fragen aus jedem Bereich ansehen. Diese Übungen werden Ihnen helfen, Ihre SQL-Kenntnisse und Ihr Selbstvertrauen zu verbessern.

Überblick über die Northwind-Datenbank

Werfen wir zunächst einen Blick auf die Datenbank, die wir verwenden werden:

SQL-Übungen für die Northwind-Datenbank

Die Tabellen in dieser Datenbank stellen jeweils ein eindeutiges Objekt dar und sind über Primär- und Fremdschlüssel mit anderen Tabellen verbunden. Der Primärschlüssel identifiziert jeden Datensatz in einer Tabelle eindeutig (zum Beispiel customer_id in der Tabelle Customer ), so dass wir Tabellen miteinander verbinden und relevante Daten abrufen können, indem wir eine Brücke zwischen ihnen schlagen.

Schauen wir uns die einzelnen Tabellen kurz an:

  • employee: Diese Tabelle enthält Daten über die Mitarbeiter des Unternehmens, die für die Personalabteilung und die Leistungsanalyse der Mitarbeiter nützlich sein können.
  • purchase: Diese Tabelle enthält Daten über Transaktionen zwischen Kunden und dem Unternehmen. Diese Informationen können bei der Einkaufsanalyse, der Lagerplanung und der Standortanalyse hilfreich sein.
  • customer: Diese Tabelle enthält Daten über die Kunden des Unternehmens. Dies kann für die Identifizierung von Zielgruppen und die Personalisierung von Dienstleistungen nützlich sein.
  • purchase_item: Diese Tabelle verbindet die Einkäufe mit den Produkten und ermöglicht es, Informationen über die Preise und Mengen der verschiedenen Produkte in jeder Bestellung zu erhalten.
  • product: Diese Tabelle zeigt Daten zu den Produkten im Angebot des Unternehmens an. Dies kann Einblicke in beliebte Produkte und deren Details geben.
  • category: Diese Tabelle enthält Informationen über verschiedene Produktkategorien, die uns helfen können, Einblicke in beliebte Kategorien zu erhalten.

Northwind-Datenbank-Übungen

Lassen Sie uns nun in einige praktische SQL-Übungen eintauchen, die auf dieser Datenbank basieren. Wir werden diesen Artikel in sechs Abschnitte unterteilen, die jeweils verschiedene SQL-Fähigkeiten vermitteln. Halten Sie unser SQL-Spickzettel in der Nähe für eine schnelle Referenz auf die Funktionen und Syntax, die wir verwenden werden.

1. Abfragen einzelner Tabellen

Wir beginnen mit den Grundlagen: Filtern und Abrufen von Daten aus einer einzelnen Tabelle. In diesen Übungen werden Sie die Klauseln SELECT und WHERE verwenden, um spezifische Informationen aus einzelnen Tabellen zu extrahieren. Die Beherrschung dieser grundlegenden SQL-Befehle bildet eine solide Grundlage für die Erstellung komplexerer Abfragen in der Folgezeit.

Übung 1: Alle Produkte

Zeigen Sie alle Daten an, die in der Tabelle product Tabelle.

Lösung:

SELECT *
FROM product;

Erläuterung:

In dieser Abfrage:

  • SELECT * weist SQL an, alle Spalten der Tabelle auszuwählen product
  • FROM product gibt die Tabelle an, die wir verwenden.
  • Diese Abfrage gibt alle Zeilen und Spalten in der product Tabelle zurück und liefert eine vollständige Übersicht über die Details jedes Produkts in der Datenbank.

Übung 2: Produkte, die teurer sind als 3,5

Zeigen Sie die Namen der Produkte an, deren Stückpreis größer oder gleich 3,5 ist.

Lösung:

SELECT product_name
FROM product
WHERE unit_price >= 3.5;

Erläuterung:

In dieser Abfrage:

  • SELECT product_name gibt an, dass wir nur die Produktnamen haben wollen.
  • FROM product gibt die Tabelle an, die wir verwenden.
  • WHERE unit_price >= 5 begrenzt die Ausgabe auf Produkte mit einem Preis von 3,5 oder mehr.
  • Diese Abfrage ist nützlich, um die teureren Artikel im Geschäft zu identifizieren.

Übung 3: Kundennamen und E-Mail-Adressen

Zeigen Sie die Namen und E-Mail-Adressen der Kunden an. Sie finden den Namen in der Spalte contact_name und die E-Mail in der Spalte contact_email der Tabelle customer Tabelle. Benennen Sie die Spalten in name bzw. email um.

Lösung:

SELECT
  contact_name AS name,
  contact_email AS email
FROM customer;

Erläuterung:

In dieser Abfrage:

  • SELECT contact_name AS name nimmt die Spalte contact_name und benennt sie in der Ausgabe in name um. Das Gleiche geschieht mit contact_email AS email.
  • FROM customer gibt die Tabelle an, die wir verwenden.
  • Das Aliasing mit AS macht die Ergebnisse lesbarer und benutzerfreundlicher. Dies kann besonders nützlich sein, wenn Sie die Ergebnisse an nicht-technische Beteiligte weitergeben.

Weitere Beispiele für praktische und einfache Übungen finden Sie in unserem Artikel SQL-Praxis für Einsteiger: AdventureWorks-Übungen.

2. Abfragen aus mehreren Tabellen

In diesem Abschnitt geht es um die Kombination von Daten aus verschiedenen Tabellen mit Hilfe von JOINs. Dies ermöglicht die Erstellung komplexerer Abfragen.

Übung 4: Produkt und Kategorien

Wählen Sie Produktnamen zusammen mit ihren Kategorien aus. Zeigen Sie zwei Spalten an: product_name und category_name.

Lösung:

SELECT
  product_name,
  category.name AS category_name
FROM product
JOIN category
  ON product.category_id = category.category_id;

Erläuterung:

In dieser Abfrage:

  • SELECT product_name, category.name AS category_name identifiziert die Spalten, die in unserer Ausgabe angefordert werden.
  • FROM product spezifiziert die erste Tabelle in unserer JOIN.
  • JOIN Kategorie spezifiziert die zweite Tabelle in unserer JOIN.
  • ON product.category_id = category.category_id fungiert als Brücke zwischen beiden Tabellen und stellt sicher, dass nur Zeilen mit übereinstimmenden Kategorie-IDs in die Ergebnismenge aufgenommen werden.

Übung 5: Mitarbeiter und Einkäufe, Teil 1

Zeigen Sie die Vor- und Nachnamen der Mitarbeiter, die Einkäufe bearbeiten, zusammen mit der shipped_date des Einkaufs.

Lösung:

SELECT
  last_name,
  first_name,
  shipped_date
FROM employee
JOIN purchase
  ON employee.employee_id = purchase.employee_id;

Erläuterung:

In dieser Abfrage:

  • SELECT last_name, first_name, shipped_date identifiziert die Spalten, die in unserer Ausgabe angezeigt werden.
  • FROM employee gibt die erste Tabelle in unserer JOIN an.
  • JOIN purchase gibt die zweite Tabelle in unserer JOIN an.
  • ON employee.employee_id = purchase.employee_id verknüpft beide Tabellen auf Zeilen, bei denen die Mitarbeiter-ID in der employee Tabelle mit der Angestellten-ID in der purchase Nur Zeilen mit übereinstimmenden IDs werden in die Ergebnismenge aufgenommen.

Übung 6: Mitarbeiter und Einkäufe, Teil 2

Zeigen Sie für jeden Mitarbeiter seine last_name, first_name und die ID des/der von ihm bearbeiteten Einkaufs/e an (falls es solche gibt). Achten Sie darauf, dass die Daten für alle Mitarbeiter angezeigt werden, auch wenn sie an keinen Einkäufen beteiligt waren.

Lösung:

SELECT
  last_name,
  first_name,
  purchase_id
FROM employee
LEFT JOIN purchase
  ON employee.employee_id = purchase.employee_id;

Erläuterung:

In dieser Abfrage:

  • SELECT last_name, first_name, purchase_id gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen.
  • FROM employee bezeichnet die erste Tabelle in unserer LEFT JOIN, die Details über Mitarbeiter enthält.
  • LEFT JOIN purchase gibt die zweite Tabelle in der Verknüpfung an, die Daten über Einkäufe enthält. Die Verwendung von LEFT JOIN stellt sicher, dass alle Zeilen aus der employee Tabelle enthalten sind, auch wenn es keinen passenden Datensatz in der Tabelle purchase
  • ON employee.employee_id = purchase.employee_id verbindet beide Tabellen und gleicht Datensätze auf der Basis der Mitarbeiter-ID ab. Wenn ein Mitarbeiter keinen entsprechenden Datensatz in der Tabelle purchase Tabelle keinen entsprechenden Datensatz hat, wird er dennoch in das Ergebnis aufgenommen und die Einkaufsfelder in der Ergebnismenge werden als NULL angezeigt.

Wie Sie sehen, können Sie durch das Schreiben von Abfragen Ihre SQL-Kenntnisse verbessern! Eine weitere gute Möglichkeit, Ihre SQL-Kenntnisse zu erweitern, sind Projekte wie die in SQL Project for Beginners: AdventureWorks Sales Dashboard.

3. ORDER BY: Sortieren Ihrer Ergebnisse

Die ORDER BY -Klausel in SQL ist besonders nützlich, um Ergebnisse lesbarer und aussagekräftiger zu gestalten. Unabhängig davon, ob Sie Daten numerisch, alphabetisch oder nach Datum sortieren möchten, ist dies in Berichten und Analysen sehr nützlich.

Übung 7: Mitarbeiter nach Geburtsdatum

Zeigen Sie die Nachnamen, Vornamen und Geburtsdaten der Mitarbeiter an. Sortieren Sie die Mitarbeiter nach ihrem Geburtsdatum in absteigender Reihenfolge (d. h. die jüngsten Daten kommen zuerst).

Lösung:

SELECT
  last_name,
  first_name,
  birth_date
FROM employee
ORDER BY birth_date DESC;

Erläuterung:

In dieser Abfrage:

  • SELECT last_name, first_name, birth_date gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen.
  • FROM employee gibt die Tabelle an, aus der die Daten abgerufen werden.
  • ORDER BY birth_date DESC sortiert die Ergebnisse nach der Spalte birth_date in absteigender Reihenfolge, so dass die Mitarbeiter mit den jüngsten Geburtsdaten zuerst erscheinen. Dadurch wird die Einschränkung, dass es keine Altersspalte gibt, überwunden.

Übung 8: Namen und Preise von Produkten

Zeigen Sie die Namen und Stückpreise aller Produkte an. Zeigen Sie die billigsten Produkte zuerst an.

Lösung:

SELECT
  product_name,
  unit_price
FROM product
ORDER BY unit_price;

Erläuterung:

In dieser Abfrage:

  • SELECT product_name, unit_price gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen.
  • FROM Produkt identifiziert die Tabelle, aus der die Daten entnommen werden.
  • ORDER BY unit_price sortiert die Ergebnisse nach der Spalte unit_price in aufsteigender Reihenfolge, was bedeutet, dass die Produkte mit den niedrigsten Preisen zuerst erscheinen.
  • Wie Sie sehen, müssen wir ASCending nicht explizit angeben; es ist die Standardsortierreihenfolge.

Übung 9: Kaufdaten

Zeigen Sie alle Daten für alle Einkäufe an. Sortieren Sie die Zeilen nach dem Versandort in aufsteigender Reihenfolge und nach dem Versanddatum in absteigender Reihenfolge.

Lösung:

SELECT *
FROM purchase
ORDER BY
  ship_city ASC,
  shipped_date DESC;

Erläuterung:

In dieser Abfrage:

  • SELECT * gibt an, dass alle Spalten der Tabelle in der Ausgabe enthalten sein sollen.
  • FROM purchase identifiziert die Tabelle, aus der die Daten abgerufen werden.
  • ORDER BY ship_city ASC, shipped_date DESC sortiert die Ergebnisse zunächst nach ship_city in aufsteigender Reihenfolge (so dass die Städte alphabetisch sortiert sind). Dann werden die Ergebnisse innerhalb jeder Stadt weiter nach shipped_date in absteigender Reihenfolge sortiert (so dass die jüngsten Versanddaten für jede Stadt zuerst erscheinen).

Wenn Sie weitere Übungen mit ORDER BY finden möchten, lesen Sie unseren Artikel 10 Anfängerübungen SQL-Praxis mit Lösungen.

4. GROUP BY und Aggregatfunktionen

Der nächste Abschnitt hilft dabei, die Fähigkeit zu entwickeln, Daten durch Gruppierung und Aggregation zusammenzufassen. Mithilfe von Aggregatfunktionen können wir durch die Kombination von Zeilen und die Durchführung von Berechnungen innerhalb jeder Gruppe Erkenntnisse gewinnen.

Übung 10: Anzahl der Kategorien

Zählen Sie die Anzahl der Kategorien, die in der Tabelle category Tabelle. Benennen Sie die Spalte number_of_categories.

Lösung:

SELECT
  COUNT(category_id) AS number_of_categories
FROM category;

Erläuterung:

In dieser Abfrage:

  • SELECT COUNT(category_id) AS number_of_categories zählt die Anzahl der Zeilen, die keine NULLs in der category_id haben. Sie zeigt die resultierende Spalte als number_of_categories an.
  • FROM category gibt die Tabelle an, aus der die Daten abgerufen werden.

Übung 11: Kundenkäufe

Zählen Sie die Anzahl der Einkäufe, die jeder Kunde getätigt hat. Zeigen Sie customer_id, contact_name und purchases_number an. Ignorieren Sie alle Kunden, die nicht in der Tabelle vorhanden sind. purchase Tabelle vorhanden sind.

Lösung:

SELECT
  purchase.customer_id,
  contact_name,
  COUNT(*) AS purchases_number
FROM purchase
JOIN customer
  ON purchase.customer_id = customer.customer_id
GROUP BY
  purchase.customer_id,
  contact_name;

Erläuterung:

In dieser Abfrage:

  • SELECT purchase.customer_id, contact_name, COUNT(*) AS purchases_number gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen. Sie ruft die ID und den Kontaktnamen jedes Kunden ab, zusammen mit der Anzahl ihrer Einkäufe (mit purchases_number gekennzeichnet).
  • FROM purchase identifiziert die erste Tabelle in der JOIN.
  • JOIN customer gibt die zweite Tabelle in der JOIN an.
  • ON purchase.customer_id = customer.customer_id verknüpft die beiden Tabellen, indem er Zeilen abgleicht, in denen customer_id in beiden Tabellen gleich ist, und sicherstellt, dass nur Käufe in Verbindung mit bestehenden Kunden berücksichtigt werden.
  • GROUP BY purchase.customer_id, contact_name gruppiert die Ergebnisse nach der ID und dem Kontaktnamen jedes Kunden, so dass die Funktion COUNT(*) die Anzahl der Einkäufe für jeden Kunden berechnen kann.

Übung 12: Umsätze für Kunden- und Mitarbeiterpaare

Ermitteln Sie für jeden Kunden und Mitarbeiter den Gesamtpreis aller Einkäufe, die er getätigt hat und denen ein bestimmter Mitarbeiter zugeordnet ist. Zeigen Sie drei Spalten an: customer_id, employee_id, und den Gesamtpreis der Einkäufe. Benennen Sie die dritte Spalte in total_purchases_price um.

Lösung:

SELECT
  customer_id,
  employee_id,
  SUM(total_price) AS total_purchases_price
FROM purchase
GROUP BY
  customer_id,
  employee_id;

Erläuterung:

In dieser Abfrage:

  • SELECT customer_id, employee_id, SUM(total_price) AS total_purchases_price gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen, und zeigt jede customer_id und employee_id zusammen mit der Summe von total_price für die mit jeder Kombination verbundenen Einkäufe. Diese Summe wird im Ergebnis als total_purchases_price bezeichnet.
  • FROM purchase identifiziert die Tabelle, aus der die Daten entnommen werden.
  • GROUP BY customer_id, employee_id gruppiert die Ergebnisse sowohl nach customer_id als auch nach employee_id, so dass die Funktion SUM(total_price) den Gesamtkaufpreis für jede einzelne Kunden-Mitarbeiter-Kombination berechnen kann.

5. Andere SQL-Funktionen

Als Nächstes werden wir kurz einige weitere SQL-Funktionen behandeln, die im Kurs enthalten sind, aber auch in der täglichen Analyse nützlich sind. Diese Funktionen können Ihnen in Kombination mit den anderen in diesem Artikel besprochenen helfen, Ihre SQL-Kenntnisse zu verbessern.

Übung 13: Unbekanntes Einstellungsdatum

Zeigen Sie die Nach- und Vornamen von Mitarbeitern mit unbekanntem Eintrittsdatum an.

Lösung:

SELECT
  last_name,
  first_name
FROM employee
WHERE hire_date IS NULL;

Erläuterung:

In dieser Abfrage:

  • SELECT last_name, first_name gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen.
  • FROM employee gibt die Tabelle an, aus der die Daten entnommen werden.
  • WHERE hire_date IS NULL filtert die Ergebnisse, um nur die Mitarbeiter einzuschließen, deren hire_date NULL ist, was bedeutet, dass ihr Einstellungsdatum unbekannt ist.

Übung 14: Durchschnittspreis pro Kategorie

Zählen Sie für jede Kategorie den Durchschnittspreis ihrer Produkte. Zeigen Sie nur die Kategorien an, bei denen der durchschnittliche Stückpreis größer ist als der durchschnittliche Stückpreis insgesamt. Benennen Sie die Spalten category_name und average_price.

Lösung:

SELECT
  category.name AS category_name,
  AVG(unit_price) AS average_price
FROM product
JOIN category
  ON product.category_id = category.category_id
GROUP BY category.name
HAVING AVG(unit_price) > (
  SELECT AVG(unit_price)
  FROM product
);

Erläuterung:

In dieser Abfrage:

  • SELECT category.name AS category_name, AVG(unit_price) AS average_price gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen.
  • FROM product identifiziert die erste Tabelle in der JOIN.
  • JOIN category spezifiziert die zweite Tabelle in der JOIN.
  • ON product.category_id = category.category_id verknüpft die beiden Tabellen und stellt sicher, dass nur Produkte mit übereinstimmenden Kategorie-IDs aus beiden Tabellen einbezogen werden.
  • GROUP BY category.name gruppiert die Ergebnisse nach Kategorienamen, damit die Funktion AVG(unit_price) den Durchschnittspreis für jede Kategorie berechnen kann.
  • HAVING AVG(unit_price) > (SELECT AVG(unit_price) FROM product) filtert die gruppierten Ergebnisse so, dass nur Kategorien einbezogen werden, in denen der Durchschnittspreis der Produkte größer ist als der Gesamtdurchschnittspreis aller Produkte in der Tabelle product
  • Die Unterabfrage (SELECT AVG(unit_price) FROM product) berechnet den Gesamtdurchschnittspreis pro Einheit für alle Produkte.

6. Fortgeschrittenes SQL Merkmale

Abschließend werden wir uns einige fortgeschrittene SQL-Abfragen ansehen. Dabei werden wir auf die Funktionen verweisen, die wir bereits kennengelernt haben.

Übung 15: Kategorien mit aktiven Produkten

Zeigen Sie für jede Kategorie die Anzahl ihrer Produkte an, die nicht eingestellt wurden (sie werden fortgesetzt oder es gibt eine NULL in der Spalte discontinued ). Zeigen Sie die Spalten mit den Namen category_name und products_number an. Zeigen Sie nur die Zeilen an, bei denen die Anzahl dieser Produkte größer als 1 ist. Zeigen Sie auch nicht die Zeile für die Kategorie Sonstige an.

Lösung:

SELECT
  category.name AS category_name,
  COUNT(product_id) AS products_number
FROM product
JOIN category
  ON product.category_id = category.category_id
WHERE category.name <> 'Other'
  AND discontinued IS NOT TRUE
GROUP BY category.name
HAVING COUNT(product_id) > 1;

Erläuterung:

In dieser Abfrage:

  • SELECT category.name AS category_name, COUNT(product_id) AS products_number gibt die Spalten an, die in die Ausgabe aufgenommen werden sollen.
  • FROM product identifiziert die erste Tabelle in der JOIN.
  • JOIN category spezifiziert die zweite Tabelle in der JOIN.
  • ON product.category_id = category.category_id verknüpft die beiden Tabellen und stellt sicher, dass nur Produkte mit übereinstimmenden Kategorie-IDs aus beiden Tabellen einbezogen werden.
  • WHERE category.name <> 'Other' AND discontinued IS NOT TRUE filtert die Ergebnisse, um Kategorien mit dem Namen "Other" auszuschließen und nur Produkte einzuschließen, die nicht eingestellt wurden.
  • GROUP BY category.name gruppiert die Ergebnisse nach Kategorienamen, damit die Funktion COUNT(product_id) die Anzahl der Produkte innerhalb jeder Kategorie zählen kann.
  • HAVING COUNT(product_id) > 1 filtert die gruppierten Ergebnisse, um nur Kategorien mit mehr als einem Produkt einzuschließen.

Übung 16: Weinstatistiken

Alle Weine in der Produkttabelle haben einen Namen, der mit Wine beginnt. Finden Sie die:

  • Anzahl solcher Produkte in der Tabelle (products_number).
  • Gesamtzahl der auf Lager befindlichen Einheiten (units_number).
  • Durchschnittlicher Produktpreis (average_price).
  • Verhältnis des Höchstpreises zum Mindestpreis (max_to_min_ratio).
  • Differenz zwischen dem Höchstpreis und dem Durchschnittspreis (max_to_average).
  • Differenz zwischen dem Durchschnittspreis und dem Mindestpreis (average_to_min).

Runden Sie die vier letzten Spalten auf zwei Dezimalstellen.

Lösung:

SELECT
  COUNT(*) AS products_number,
  SUM(units_in_stock) AS units_number,
  ROUND(AVG(unit_price), 2) AS average_price,
  ROUND(MAX(unit_price) / MIN(unit_price), 2) AS max_to_min_ratio,
  ROUND(MAX(unit_price) - AVG(unit_price), 2) AS max_to_average,
  ROUND(AVG(unit_price) - MIN(unit_price), 2) AS average_to_min
FROM product
WHERE product_name LIKE 'Wine%';

Erläuterung:

In dieser Abfrage:

  • Lassen Sie uns zunächst die Anweisung SELECT aufschlüsseln:
    • products_number Berechnet die Gesamtzahl der Produkte.
    • units_number summiert die Gesamtzahl der auf Lager befindlichen Einheiten.
    • average_price ermittelt den durchschnittlichen Stückpreis der Produkte, gerundet auf 2 Dezimalstellen.
    • max_to_min_ratio ermittelt das Verhältnis zwischen dem maximalen Stückpreis und dem minimalen Stückpreis, gerundet auf 2 Dezimalstellen.
    • max_to_average ermittelt die Differenz zwischen dem maximalen Stückpreis und dem durchschnittlichen Stückpreis, gerundet auf 2 Dezimalstellen.
    • average_to_min berechnet die Differenz zwischen dem durchschnittlichen Stückpreis und dem minimalen Stückpreis, gerundet auf 2 Dezimalstellen.
  • FROM product identifiziert die Tabelle, aus der die Daten entnommen werden.
  • WHERE product_name LIKE 'Wine%' filtert die Ergebnisse, um nur Produkte einzuschließen, deren Namen mit 'Wine' beginnen.

Möchten Sie weitere Northwind-Übungen für SQL-Lernende?

Indem Sie das Schreiben von Abfragen üben, können Sie Ihre SQL-Fähigkeiten stärken. Durch die Arbeit mit realen Daten, wie z.B. der Northwind-Datenbank, erhalten Sie Erfahrung im schnellen Zugriff auf Informationen und deren Auswertung.

Wenn Sie die Northwind-Übungen in diesem Artikel interessant gefunden haben, sollten Sie sich den Kurs Basic SQL-Praxis: A Store ansehen. Dort finden Sie viele weitere interaktive Übungen. Wir haben auch SQL Project for Portfolio: Northwind Store, ein Artikel über die Erstellung eines Projekts auf der Grundlage der Northwind-Datenbank. Viel Spaß beim Lernen!