Zurück zur Artikelliste Artikel
13 Leseminuten

SQL für die Datenanalyse: 15 praktische Übungen mit Lösungen

Sind Sie neu in der Welt von SQL und möchten Sie die Möglichkeiten der Datenanalyse nutzen? In diesem Artikel werden wir unsere SQL-Kenntnisse anhand von 15 praktischen Übungen verbessern, die speziell für Anfänger konzipiert wurden. Denn wenn es um SQL geht, macht Übung wirklich den Meister!

Wir werden ein Schlaglicht auf den wichtigen Bereich der Datenanalyse werfen, in dem SQL die Hauptrolle spielt. SQL, die Structured Query Language, spielt eine zentrale Rolle bei der Datenanalyse. Sie bietet einen robusten Rahmen für die Abfrage, Umwandlung und Extraktion von wertvollen Erkenntnissen aus Datenbanken. Wenn Sie tiefer in die Welt von SQL eintauchen und ein Meister der Datenanalyse werden möchten, finden Sie weitere Informationen und Ressourcen in unserem Artikel SQL für Datenanalyse lernen.

Wir werden Sie aber nicht mit Theorie langweilen. Stattdessen glauben wir fest an die Kraft des Lernens durch praktische Erfahrung. Deshalb haben wir eine Sammlung von 15 anfängerfreundlichen SQL-Übungen zusammengestellt, die Sie in die Kunst der Datenanalyse eintauchen lassen - und das alles unter Verwendung eines realen Datensatzes aus einem Geschäft.

Diese Übungen stammen aus unserem umfassenden Kurs, Basic SQL-Praxis: A Store, der insgesamt 169 interaktive Online-Übungen bietet. Die Übungen in diesem Artikel sind in verschiedene Themenbereiche gegliedert: Abfragen für einzelne Tabellen, JOIN-Abfragen, ORDER BY-Abfragen, GROUP BY-Übungen und andere Funktionen. Wenn Ihnen diese Übungen gefallen, werden Sie zweifellos den Kurs erkunden wollen, um eine umfassendere Lernerfahrung zu machen.

Also, krempeln Sie die Ärmel hoch und tauchen Sie ein in die Welt der SQL-gestützten Datenanalyse!

Überblick über die Filialdatenbank

Die Filialdatenbank besteht aus sechs Tabellen, die jeweils einem bestimmten Zweck dienen und für bestimmte Funktionen strukturiert sind. Diese Tabellen sind für die vorliegenden SQL-Übungen von zentraler Bedeutung, und es ist wichtig, ein umfassendes Verständnis für ihre Komponenten zu erlangen. Nachfolgend finden Sie eine kurze Beschreibung jeder Tabelle.

SQL für die Datenanalyse
  • employee: Enthält Mitarbeiterdetails wie ID, Name, Geburtsdatum, Adresse, Stadt, Land und unmittelbarer Vorgesetzter.
  • customer: Speichert Kundeninformationen wie Kunden-ID, Name, Unternehmen, E-Mail, Adresse, Stadt und Land.
  • purchase: Erfasst Auftragsdetails, einschließlich Auftragsnummer, Kunden-ID (wer den Auftrag erteilt hat), Mitarbeiter (wer den Auftrag bearbeitet hat), Gesamtpreis sowie Kauf- und Versanddetails.
  • purchase_item: Verknüpft Einkäufe mit Produkten über ID, Produkt, Stückpreis und Menge.
  • category: Bietet Einblicke in Produktkategorien anhand von Kategorie-ID, Name, Beschreibung und übergeordneter Kategorie-ID.
  • product: Listet die Produkte des Ladens auf und enthält die Produkt-ID, den Produktnamen, die Kategorie-ID, die Menge pro Einheit, den Stückpreis, die vorrätigen Einheiten und den Produktstatus.

Nachdem wir nun ein besseres Verständnis der Tabellen in der Filialdatenbank erlangt haben, wollen wir uns nun einigen SQL-Übungen widmen, um Ihre Fähigkeiten in der Datenanalyse zu verbessern.

SQL-Übungen zur Datenanalyse

Da Übung für die Entwicklung und Verfeinerung Ihrer SQL-Kenntnisse unerlässlich ist, werden Ihnen diese Übungen als wertvolle Hilfsmittel dienen. Wir haben sogar einen SQL-Spickzettel für die Datenanalyse erstellt, um Ihnen die Arbeit zu erleichtern! Vielleicht möchten Sie es auf Ihrer Reise durch die folgenden 15 SQL-Übungen griffbereit haben.

Abfragen für einzelne Tabellen

In diesem Abschnitt werden wir uns auf SQL-Abfragen konzentrieren, die eine einzelne Tabelle betreffen. Diese Übungen helfen Ihnen, die Grundlagen des Abrufens, Filterns und Arbeitens mit Daten innerhalb eines einzelnen Datensatzes zu erlernen.

Übung 1: Alle Produkte

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

Lösung:

SELECT *
FROM product;

Erklärung der Lösung: Diese einfache Abfrage holt alle Daten aus der product Tabelle ab. Das Sternchen (*) wird verwendet, um anzuzeigen, dass alle verfügbaren Spalten in der Tabelle ausgewählt werden sollen, so dass im Wesentlichen alle Daten abgerufen werden. Nach dem Schlüsselwort FROM geben wir den Namen der Tabelle an, aus der wir auswählen (hier: die Tabelle product).

Übung 2: Produkte mit einem Stückpreis von mehr als 3,5

Übung: Zeigen Sie die Produktnamen von Produkten an, deren Stückpreis größer oder gleich 3,5 ist.

Lösung:

Erklärung der Lösung: Mit der Klausel WHERE filtern wir nach product_names mit einem Stückpreis größer oder gleich 3,5. Die Klausel WHERE schränkt die von der Abfrage zurückgegebenen Zeilen auf diejenigen ein, die die angegebenen Kriterien erfüllen.

Übung 3: Produkte mit spezifischen Bedingungen für Kategorie und Preis

Übung: Zeigen Sie Daten für alle Produkte in Kategorien mit einer ID von 1 (Lebensmittel) oder 5 (Obst und Gemüse) und mit einem Stückpreis über 3,5 an.

Lösung:

SELECT *
FROM product
WHERE (category_id = 1 OR category_id = 5)
  AND unit_price > 3.5;

Erklärung der Lösung: Diese Abfrage verwendet die beiden Operatoren AND und OR, um komplexe Bedingungen zu erstellen, die Produkte auf der Grundlage von Kategorie und unit_price filtern.

Der OR Operator erlaubt Produkte aus der Kategorie 1 (Lebensmittel) oder der Kategorie 5 (Obst und Gemüse), während der AND Operator sicherstellt, dass die ausgewählten Produkte einen Preis pro Einheit von mehr als 3,5 haben müssen. Die Verwendung von Klammern erhöht die Lesbarkeit der Abfrage.

JOIN-Abfragen

Joins sind ein grundlegendes Konzept in SQL. Sie sind für die Datenanalyse von entscheidender Bedeutung, da sie es Ihnen ermöglichen, Daten aus verschiedenen Quellen zu kombinieren und zu analysieren, was einen umfassenden Einblick in Ihre Datensätze ermöglicht. Weitere Übungsaufgaben zu Joins finden Sie in unserem Artikel SQL Joins: 12 Übungsfragen mit detaillierten Antworten.

Übung 4: Produkte und Kategorien

Übung: 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;

Erklärung der Lösung: In dieser Übung kombiniert eine INNER JOIN die Daten aus den Spalten product und category Tabellen. Eine INNER JOIN wählt nur die Zeilen aus, deren Werte in beiden Tabellen übereinstimmen. Dadurch wird sichergestellt, dass nur Produkte mit entsprechenden Kategorien abgerufen werden, wodurch ein aussagekräftiges und genaues Ergebnis erzielt wird.

Der ON Teil der Abfrage definiert die Beziehung zwischen den beiden Tabellen. Darüber hinaus ermöglicht die Verwendung von Aliasen (AS category_name) die Umbenennung der Spalten, wie es die Frage erfordert.

Übung 5: Einkäufe und Produkte

Übung: Zeigen Sie für jeden Einkauf die Einkaufs-ID, den Produktnamen, den Stückpreis zum Zeitpunkt des Einkaufs und die Menge der einzelnen Artikel des Produkts an.

Lösung:

SELECT
  purchase_id,
  product_name,
  purchase_item.unit_price,
  quantity
FROM purchase_item
JOIN product
  ON purchase_item.product_id = product.product_id;

Erklärung der Lösung: Diese Abfrage kombiniert Daten aus der purchase_item und product und ermöglicht es uns, relevante Kaufinformationen anzuzeigen. In SQL werden INNER JOIN und JOIN oft austauschbar verwendet, aber sie dienen demselben Zweck: dem Abrufen übereinstimmender Zeilen aus beiden Tabellen.

Übung 6: Käufe und Kategorien

Übung: Zeigen Sie für jeden Einkauf alle Produktkategorien an, die bei diesem Einkauf gekauft wurden. Zeigen Sie jede Kategorie für jeden Einkauf nur einmal an.

Lösung:

SELECT DISTINCT
  purchase_id,
  category.name AS category_name
FROM purchase_item
JOIN product
  ON purchase_item.product_id = product.product_id
JOIN category
  ON product.category_id = category.category_id;

Erklärung der Lösung: In dieser Übung verknüpfen wir drei Tabellen: purchase_item, product, und category. Die Verknüpfung von mehr als zwei Tabellen wird durch die sequentielle Verbindung der einzelnen Tabellen über ihre zugehörigen Spalten erreicht. Wenn Sie mehr über die Verknüpfung mehrerer Tabellen erfahren möchten, lesen Sie Wie man 3 Tabellen (oder mehr) in SQL verbindet.

Durch die Verwendung des Schlüsselworts DISTINCT wird sichergestellt, dass jede Produktkategorie für jeden Kauf nur einmal angezeigt wird, wodurch eine klare und übersichtliche Liste der mit jedem Kauf verbundenen Kategorien entsteht. Dies kann besonders nützlich sein, wenn Sie redundante Informationen in Ihrer Ergebnismenge vermeiden möchten.

ORDER BY-Abfragen

Das Sortieren von Daten ist ein entscheidender Schritt in der Datenanalyse, da es Ihnen ermöglicht, Informationen strukturiert und sinnvoll zu organisieren. In den folgenden Übungen lernen Sie, wie Sie Daten für Berichts- und Analysezwecke sinnvoll anordnen können.

Übung 7: Sortierte Kategorien

Übung: Zeigen Sie alle Daten der Kategorien an. Sortieren Sie die Kategorien nach Namen in aufsteigender Reihenfolge (A bis Z).

Lösung:

SELECT *
FROM category
ORDER BY name ASC;

Erklärung der Lösung: In dieser Übung verwenden wir die ORDER BY Klausel, um die Ergebnisse aus der Tabelle category Tabelle in aufsteigender Reihenfolge nach der Spalte name. Mit dieser Anordnung können Sie die Kategorien in alphabetischer Reihenfolge anzeigen. Das Schlüsselwort ASC ist hier optional; es steht für die Standard-Sortierreihenfolge, die aufsteigend ist.

Übung 8: Mitarbeiter sortiert nach Geburtsdatum

Übung: Zeigen Sie die Nachnamen, Vornamen und Geburtsdaten der Mitarbeiter an. Sortieren Sie die Ergebnisse nach dem Alter der Mitarbeiter in aufsteigender Reihenfolge(Tipp: Verwenden Sie die Spaltebirth_date ).

Lösung:

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

Erklärung der Lösung: Da es in unserer Tabelle keine Altersspalte gibt, sortieren wir die Mitarbeiter nach birth_date in absteigender Reihenfolge mit dem Schlüsselwort DESC. Wenn Sie nach birth_date in absteigender Reihenfolge sortieren, können Sie die Mitarbeiter von den jüngsten bis zu den ältesten anzeigen.

Die Verwendung von DESC ist hier von entscheidender Bedeutung, denn sie kehrt die standardmäßige aufsteigende Sortierreihenfolge um und erzielt das gewünschte Ergebnis.

Übung 9: Produkte sortiert nach der Anzahl der Einheiten

Übung: Zeigen Sie die Daten für alle Produkte an und sortieren Sie die Ergebnisse nach der Anzahl der Einheiten in absteigender Reihenfolge und dem Produktnamen in aufsteigender Reihenfolge.

Lösung:

SELECT *
FROM product
ORDER BY units_in_stock DESC, product_name ASC;

Erklärung der Lösung: Diese Abfrage sortiert die Produkte zuerst nach units_in_stock in absteigender Reihenfolge und dann nach product_name in aufsteigender Reihenfolge. Die erste Sortierbedingung stellt sicher, dass die Produkte mit den meisten auf Lager befindlichen Einheiten an erster Stelle erscheinen; Produkte mit der gleichen Anzahl von Einheiten werden weiter alphabetisch nach Namen sortiert.

GROUP BY-Abfragen

In diesem Abschnitt befassen wir uns mit SQL-Abfragen, bei denen Daten für die Analyse gruppiert werden. GROUP BY ist wichtig für die Aggregation und Zusammenfassung von Informationen nach bestimmten Kriterien. Weitere Informationen finden Sie unter GROUP BY in SQL erklärt.

Übung 10: Der durchschnittliche Stückpreis für jede Kategorie

Übung: Zeigen Sie für jede Produktkategorie deren Namen an und ermitteln Sie den durchschnittlichen Stückpreis. Zeigen Sie zwei Spalten an: Name und average_unit_price.

Lösung:

SELECT
  category.name,
  AVG(unit_price) AS average_unit_price
FROM product
JOIN category
  ON product.category_id = category.category_id
GROUP BY category.name;

Erklärung der Lösung: In dieser Übung berechnen wir den durchschnittlichen Stückpreis für jede Produktkategorie. Die Abfrage verknüpft die Spalten product und category um Produkte mit ihren jeweiligen Kategorien zu verknüpfen. Die GROUP BY Klausel wird dann verwendet, um die Daten nach category_name zu gruppieren. Mithilfe von AVG() können wir den durchschnittlichen Stückpreis innerhalb jeder Kategorie berechnen, was uns einen Einblick in die Preisverteilung über verschiedene Produktkategorien hinweg gibt.

Übung 11: Die Anzahl der Kunden in Städten

Übung: Zählen Sie, wie viele Kunden in jeder Stadt leben, außer in Knoxville und Stockton. Sortieren Sie die Ergebnisse nach dem Städtenamen in aufsteigender Reihenfolge. Zeigen Sie zwei Spalten an: city und customers_quantity.

Lösung:

SELECT
  city,
  COUNT(customer_id) AS customers_quantity
FROM customer
WHERE city <> 'Knoxville'
  AND city <> 'Stockton'
GROUP BY city
ORDER BY city;

Erklärung der Lösung: In dieser Abfrage verwenden wir die Klausel WHERE mit dem Operator <> (was nicht gleichbedeutend ist mit), um Datensätze mit dem Städtenamen Knoxville oder Stocktonherauszufiltern. Diese Filterung stellt sicher, dass die Analyse alle Städte außer den angegebenen abdeckt.

Die Funktion COUNT() berechnet dann die Kundenzahl für jede der verbleibenden Städte. Die Klausel GROUP BY gruppiert die Daten nach Städtenamen, so dass wir die Kunden für jede Stadt zählen können.

Schließlich werden die Ergebnisse in aufsteigender Reihenfolge nach Städten geordnet, was eine klare und übersichtliche Darstellung der Kundenverteilung in den verschiedenen Städten ermöglicht.

Übung 12: Die Anzahl der eingestellten Produkte

Übung: Ermitteln Sie für jede Kategorie die Anzahl der auslaufenden Produkte. Zeigen Sie nur die Kategorien mit mindestens drei auslaufenden Produkten an. Sortieren Sie die Zeilen nach der Anzahl der eingestellten Produkte in absteigender Reihenfolge. Zeigen Sie zwei Spalten an: name (der Name der Kategorie) und discontinued_products_number.

Lösung:

SELECT
  category.name,
  COUNT(product_id) AS discontinued_products_number
FROM product
JOIN category
  ON product.category_id = category.category_id
WHERE discontinued IS TRUE
GROUP BY category.name
HAVING COUNT(product_id) >= 3
ORDER BY COUNT(product_id) DESC;

Erklärung der Lösung: In dieser Abfrage verwenden wir die HAVING Klausel, um Kategorien mit mindestens drei eingestellten Produkten zu filtern. Die HAVING Klausel wird nach der GROUP BY Operation angewendet und ermöglicht es uns, die aggregierten Ergebnisse auf der Grundlage der spezifischen Bedingung zu filtern. Weitere Informationen zur Verwendung von HAVING finden Sie in unseren Artikeln Die SQL HAVING-Klausel erklärt und HAVING vs. WHERE in SQL: Was Sie wissen sollten.

Außerdem werden Sie die Verwendung der Funktion COUNT() innerhalb der Klausel ORDER BY bemerken. Damit können wir die Zeilen auf der Grundlage der Anzahl der eingestellten Produkte in absteigender Reihenfolge sortieren.

Die ORDER BY Klausel ist flexibel und kann Aggregatfunktionen enthalten, was sie zu einem leistungsstarken Werkzeug für die Anordnung von Daten auf der Grundlage aggregierter Werte macht.

Andere SQL-Funktionen

In diesem Abschnitt befassen wir uns mit zusätzlichen SQL-Funktionen, die Ihr Toolkit erweitern. Wir werden die Arbeit mit NULL Werten und das Bereinigen von Daten mit der Funktion ROUND() untersuchen. Diese Funktionen sind für die Bearbeitung komplexer Datenanalyseszenarien von entscheidender Bedeutung.

Übung 13: Mitarbeiter mit unbekanntem Einstellungsdatum

Übung: 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;

Erklärung der Lösung: In dieser Abfrage ermöglicht die WHERE Klausel mit hire_date IS NULL das Filtern und Auswählen von Datensätzen, bei denen das Einstellungsdatum fehlt. Diese Art der Abfrage kann eine wichtige Analyse sein, um unvollständige Mitarbeiterdatensätze oder Dateneingabefehler im Datensatz zu identifizieren.

Übung 14: Anzahl der Mitarbeiter mit unbekanntem Geburts- und Einstellungsdatum

Übung: Zählen Sie die Anzahl der Mitarbeiter mit unbekanntem Geburts- und Einstellungsdatum.

Lösung:

SELECT
  COUNT(*) AS employees_number
FROM employee
WHERE birth_date IS NULL
  AND hire_date IS NULL;

Erklärung der Lösung: In dieser Abfrage verwenden wir erneut die Bedingung IS NULL, um nach Zeilen zu filtern, in denen sowohl birth_date als auch hire_date fehlen. Dies ermöglicht es uns, COUNT() nur die Mitarbeiter zu finden, bei denen sowohl das Geburts- als auch das Einstellungsdatum unbekannt sind.

Übung 15: Prozentsatz des Geldes, das der Kunde für den Kauf ausgegeben hat

Übung: Zeigen Sie für jeden Kunden, der einen Kauf getätigt hat, die ID jedes von diesem Kunden getätigten Kaufs und den prozentualen Anteil des für diesen Kauf ausgegebenen Geldes im Verhältnis zu allen von diesem Kunden ausgegebenen Geldern an.

Lösung:

SELECT
  contact_name,
  purchase_id,
  ROUND(total_price * 100.0 / (SELECT SUM(total_price) FROM purchase WHERE customer_id = p.customer_id)) AS percentage
FROM purchase p
JOIN customer 
  ON p.customer_id = customer.customer_id;

Erklärung der Lösung: In dieser Lösung verwenden wir zwei Abfragen. Die Hauptabfrage enthält eine Unterabfrage innerhalb der Anweisung SELECT, um die SUM() der Gesamtpreise für Käufe desselben Kunden zu berechnen.

Der Prozentsatz wird dann mithilfe der bereitgestellten Formel berechnet und die Funktion ROUND() wird angewendet, um das Ergebnis zu runden. Diese Abfrage ist ein leistungsstarkes Werkzeug, um Einblicke in das Kaufverhalten der einzelnen Kunden zu erhalten.

Bereit für weitere SQL-Übungen?

Die Beherrschung von SQL ist eine wichtige Fähigkeit für die Datenanalyse - und am besten lernt man sie, indem man sie selbst ausführt. In diesem Artikel haben wir eine Auswahl von 15 einsteigerfreundlichen SQL-Übungen aus unserem umfassenden Kurs " Basic SQL-Praxis: A Store" durchgespielt.

Aber diese Übungen sind nur der Anfang. Wenn Sie noch mehr lernen möchten, laden wir Sie ein, unseren kompletten Kurs mit 169 interaktiven Übungen zu besuchen. Für diejenigen, die sich nach noch größeren Herausforderungen sehnen, ist dieser Kurs nur einer von neun Kursen, die auf dem SQL-Praxis Lernpfad zur Verfügung - jeder bietet ein ansprechendes Format.

Wir haben auch unsere monatliche SQL-Praxis, die regelmäßig mit neuen Übungen aktualisiert wird, um Ihre Fähigkeiten zu schärfen und mit den neuesten SQL-Entwicklungen Schritt zu halten.

Tauchen Sie in weitere SQL-Übungen ein, und Sie werden die Kunst der Datenanalyse beherrschen. Ihr Weg zum SQL-Experten beginnt mit kontinuierlicher Übung. Bleiben Sie also auf dem Laufenden und verbessern Sie Ihre Fähigkeiten. Der Erfolg steht vor der Tür!