Zurück zur Artikelliste Artikel
22 Leseminuten

20 grundlegende SQL-Abfragebeispiele für Einsteiger: Ein vollständiger Überblick

Diese 20 grundlegenden Abfragen sind ein Muss in einem Starterpaket für jeden SQL-Anfänger. Diese Beispiele werden Sie auf Ihrem Weg zur Beherrschung von SQL voranbringen.

Sie haben sich in den Kopf gesetzt, SQL zu lernen, haben nach "basic sql query examples" oder etwas Ähnlichem gegoogelt, und nun starren Sie auf diesen Artikel. Und was nun? Alles Lernen beginnt mit den Grundlagen, also lassen Sie uns mit der grundlegendsten Frage beginnen:

Was ist SQL?

Als Erstes müssen Sie wissen, was SQL ist. SQL, die strukturierte Abfragesprache, ist eine Programmiersprache. Wie jede Sprache - egal ob Programmier- oder Natursprache - dient sie der Kommunikation, dem Gespräch. SQL ist dafür gedacht, mit einer Datenbank zu kommunizieren. Dazu verwenden wir Sätze, die wir Abfragen nennen, d. h. SQL-Befehle zum Abrufen von Daten aus der Datenbank.

Wir werden Ihnen in Kürze 20 Beispiele für grundlegende SQL-Abfragen zeigen, damit Sie mit der Datenbank sprechen können. Alle diese Abfragen werden in unserem SQL für Anfänger Dieser Kurs gibt Ihnen noch mehr Struktur, Beispiele und Aufgaben, die Sie lösen müssen. Er enthält 129 interaktive Übungen zur Abfrage einer oder mehrerer Tabellen, zur Aggregation und Gruppierung von Daten, zu JOINs, Unterabfragen und Mengenoperationen. Selbst mit den 20 kommenden Beispielen werden wir nicht alle Details oder sogar alle grundlegenden Abfragen zeigen. Deshalb empfehlen wir, den Kurs als Plattform zu nutzen, um die hier besprochenen Grundlagen zu üben.

Außerdem sind die meisten unserer Beispiele in unserem SQL für Anfänger Cheat Sheet übersichtlich dargestellt. Nehmen Sie es ruhig zur Hand - es könnte Ihnen helfen, das Folgende besser zu verstehen.

Lassen Sie uns keine Zeit verlieren! Wir stellen den Datensatz vor, und dann geht es ans Schreiben und Erklären von grundlegenden SQL-Abfragen.

Datensatz

Das Dataset besteht aus zwei Tabellen. Die erste ist unten abgebildet; Sie können diese Tabelle erstellen, indem Sie diese Abfrage von GitHub kopieren und ausführen.

idfirst_namelast_namedepartmentsalary
1PaulGarrixCorporate3,547.25
2AstridFoxPrivate Individuells2,845.56
3MatthiasJohnsonPrivate Individuells3,009.41
4LucyPattersonPrivate Individuells3,547.25
5TomPageCorporate5,974.41
6ClaudiaConteCorporate4,714.12
7WalterDeerPrivate Individuells3,547.25
8StephanieMarxCorporate2,894.51
9LucaPavarottiPrivate Individuells4,123.45
10VictoriaPollockCorporate4,789.53

Wie jede Tabelle hat auch diese einen Namen: employees. Jede Tabelle hat Spalten, die ebenfalls Namen haben. Sie beschreiben, welche Daten jede Spalte enthält.

Die Spalten und Daten in der obigen Tabelle sind:

  • id - Die eindeutige ID des Mitarbeiters und der Primärschlüssel der Tabelle.
  • first_name - Der Vorname des Mitarbeiters.
  • last_name - Der Nachname des Mitarbeiters.
  • department - Die Abteilung des Mitarbeiters.
  • salary - Das Monatsgehalt des Mitarbeiters in USD.

Daraus geht hervor, dass es sich bei dieser Tabelle um eine Liste der Mitarbeiter eines Unternehmens und ihrer Gehälter handelt. Es gibt auch Angaben zu den Abteilungen der Mitarbeiter. Alle Mitarbeiter arbeiten in der Verkaufsabteilung, wobei die Abteilung entweder Unternehmen oder Privatpersonen sein kann Individuell. Mit anderen Worten: Die Mitarbeiter verkaufen die Produkte des Unternehmens an Unternehmen und Privatpersonen.

Die andere Tabelle im Datensatz heißt quarterly_sales. Sie ist unten abgebildet, und die Abfrage zur Erstellung der Tabelle finden Sie hier.

employee_idq1_2022q2_2022q3_2022q4_2022
83,471.4114,789.253,478.341,254.23
45,417.8112,846.238,741.543,589.99
101,547.521,269.661,478.652,474.33
18,715.558,465.6524,747.823,514.36
312,774.5124,784.3112,223.348,451.51
24,989.235,103.224,897.985,322.05
718,415.6615,279.3714,634.4414,445.12
62,498.638,741.453,997.652,497.21
56,349.747,555.556,944.357,788.01
94,485.364,101.508,787.457,648.90

Die Spalten sind:

  • employee_id - Die eindeutige ID des Mitarbeiters. Außerdem ein Fremdschlüssel, der auf die Spalte id aus der Tabelle employees.
  • q1_2022 - Die Verkäufe dieses Mitarbeiters im ersten Quartal 2022.
  • q2_2022 - Die Verkäufe dieses Mitarbeiters im zweiten Quartal 2022.
  • q3_2022 - Die Verkäufe dieses Mitarbeiters im dritten Quartal 2022.
  • q4_2022 - Die Verkäufe dieses Mitarbeiters im vierten Quartal 2022.

Im Allgemeinen ist diese Tabelle eine Liste der Verkäufe jedes Quartals, die von jedem in der ersten Tabelle aufgeführten Mitarbeiter getätigt wurden.

Beginnen wir nun mit dem Schreiben von SQL-Abfragen.

1. Auswahl aller Spalten aus einer Tabelle

Diese Abfrage ist nützlich, wenn Sie schnell alle Spalten einer Tabelle abrufen möchten, ohne jede Spalte in die SELECT-Anweisung zu schreiben.

Abfrage

SELECT *
FROM employees;

Erläuterung

Wann immer Sie eine beliebige Anzahl von Spalten aus einer Tabelle auswählen wollen, müssen Sie die Anweisung SELECT verwenden. Sie schreiben sie ganz offensichtlich mit dem Schlüsselwort SELECT.

Nach dem Schlüsselwort folgt ein Sternchen (*), das als Abkürzung für "alle Spalten der Tabelle" steht.

Um die Tabelle zu spezifizieren, verwenden Sie die Klausel FROM und schreiben den Namen der Tabelle dahinter.

Ausgabe

Die Ausgabe der Abfrage ist die gesamte Tabelle employeeswie unten gezeigt.

idfirst_namelast_namedepartmentsalary
1PaulGarrixCorporate3,547.25
2AstridFoxPrivate Individuells2,845.56
3MatthiasJohnsonPrivate Individuells3,009.41
4LucyPattersonPrivate Individuells3,547.25
5TomPageCorporate5,974.41
6ClaudiaConteCorporate4,714.12
7WalterDeerPrivate Individuells3,547.25
8StephanieMarxCorporate2,894.51
9LucaPavarottiPrivate Individuells4,123.45
10VictoriaPollockCorporate4,789.53

2. Auswählen einer Spalte aus einer Tabelle

Sie können diese Abfrage verwenden, wenn Sie nur eine Spalte aus der Tabelle benötigen...

Abfrage

SELECT first_name
FROM employees;

Erläuterung

Die Vorgehensweise ist ähnlich wie bei der vorherigen Abfrage. Diesmal wird jedoch anstelle eines Sternchens der Name der spezifischen Spalte in SELECT geschrieben. In diesem Fall ist es die Spalte first_name.

Die zweite Zeile der Abfrage ist dieselbe: Sie verweist auf die Tabelle in der Klausel FROM.

Ausgabe

Die Abfrage gibt die Liste der Vornamen der Mitarbeiter zurück.

first_name
Paul
Astrid
Matthias
Lucy
Tom
Claudia
Walter
Stephanie
Luca
Victoria

3. Auswahl von zwei Spalten aus einer Tabelle

Diese Abfrage ist nützlich, wenn zwei (oder mehr) Spalten aus einer Tabelle ausgewählt werden sollen.

Abfrage

SELECT first_name,
	 last_name
FROM employees;

Erläuterung

Auch hier ist der Ansatz ähnlich wie bei den früheren Beispielen. Um zwei Spalten auszuwählen, müssen Sie deren Namen in SELECT schreiben. Wichtig ist, dass die Spalten durch ein Komma getrennt werden. Im Beispiel sehen Sie, dass zwischen den Spalten first_name und last_name ein Komma steht.

Dann verweisen Sie wie üblich auf die Tabelle employees in FROM.

Ausgabe

Die Abfrage zeigt nun die vollständigen Namen der Mitarbeiter an.

first_namelast_name
PaulGarrix
AstridFox
MatthiasJohnson
LucyPatterson
TomPage
ClaudiaConte
WalterDeer
StephanieMarx
LucaPavarotti
VictoriaPollock

4. Auswahl von zwei (oder mehr) Spalten aus einer Tabelle und Filterung durch numerischen Vergleich in WHERE

Wenn Sie diese SQL-Abfrage kennen, können Sie Daten nach numerischen Werten filtern. Sie können dies mit Hilfe von Vergleichsoperatoren in der WHERE Klausel tun.

Hier ist die Übersicht über die SQL-Vergleichsoperatoren.

Comparison OperatorDescription
=Is equal to
>Is greater than
<Is less than
>=Is greater than or equal to
<=Is less than or equal to
<>Is not equal to

Abfrage

SELECT 
  first_name, 
  last_name,
  salary
FROM employees
WHERE salary > 3800;

Erläuterung

Die Abfrage wählt eigentlich drei, nicht zwei Spalten aus. Es ist dasselbe wie bei zwei Spalten: Schreiben Sie sie einfach in SELECT und trennen Sie sie mit Kommas.

Dann verweisen wir auf die Tabelle in FROM.

Nun müssen wir nur die Mitarbeiter mit einem Gehalt über 3.800 anzeigen. Hierfür müssen Sie WHERE verwenden. Dies ist eine Klausel, die Bedingungen akzeptiert und zum Filtern der Ausgabe verwendet wird. Sie durchläuft die Tabelle und gibt nur die Daten aus, die die Bedingung erfüllen.

In unserem Fall suchen wir nach Gehältern, die "größer" als eine bestimmte Zahl sind. Mit anderen Worten, eine Bedingung, die den Vergleichsoperator > verwendet.

Um die Bedingung festzulegen, schreiben wir den Spaltennamen in WHERE. Dann kommt der Vergleichsoperator und danach der Wert, den die Daten übersteigen müssen. Diese Bedingung gibt nun alle Gehälter zurück, die über 3.800 liegen.

Ausgabe

Die Abfrage gibt vier Mitarbeiter und ihre Gehälter zurück. Wie Sie sehen können, liegen alle Gehälter über 3.800.

first_namelast_namesalary
TomPage5,974.41
ClaudiaConte4,714.12
LucaPavarotti4,123.45
VictoriaPollock4,789.53

5. Auswählen von zwei Spalten und Filtern mit einer Gleichheitsbedingung in WHERE

Auch dieses Beispiel einer einfachen SQL-Abfrage ist nützlich, wenn Sie mehrere Spalten, aber nicht alle Zeilen der Tabelle auswählen möchten. Jetzt wollen Sie die Werte finden, die mit dem Wert aus der Bedingung übereinstimmen. Dazu benötigen Sie die Gleichheitsbedingung (=).

Abfrage

SELECT 
  first_name,
  last_name
FROM employees
WHERE first_name = 'Luca';

Erläuterung

Die Abfrage wählt die Vor- und Nachnamen der Mitarbeiter aus.

Wir wollen aber nur die Mitarbeiter anzeigen, deren Name Luca ist. Dazu verwenden wir wieder WHERE. Die Vorgehensweise ist ähnlich wie im vorherigen Beispiel: Wir verwenden WHERE, schreiben den Spaltennamen und verwenden den Vergleichsoperator. Dieses Mal verwendet unsere Bedingung das Gleichheitszeichen (=).

Mit anderen Worten: Die Werte in der Spalte first_name müssen gleich Luca sein. Wenn es sich bei der Bedingung nicht um eine Zahl, sondern um einen Text oder ein Datum/eine Uhrzeit handelt, muss sie in einfache Anführungszeichen gesetzt werden (''). Deshalb wird unsere Bedingung als "Luca" und nicht einfach als Luca geschrieben.

Ausgabe

Die Ausgabe zeigt, dass es nur einen Mitarbeiter namens Luca gibt, und sein vollständiger Name ist Luca Pavarotti.

first_namelast_name
LucaPavarotti

6. Auswählen von zwei Spalten und Ordnen nach einer Spalte

Hier ist ein weiteres Beispiel für eine einfache SQL-Abfrage, die Sie nützlich finden werden. Es kann immer dann verwendet werden, wenn Sie die Ausgabe auf eine bestimmte Art und Weise ordnen müssen, um sie besser lesbar zu machen.

Das Ordnen oder Sortieren der Ausgabe erfolgt mit der ORDER BY Klausel. Standardmäßig wird die Ausgabe in aufsteigender Reihenfolge sortiert, d. h. alphabetisch (bei Textdaten), von der niedrigsten bis zur höchsten Zahl (bei numerischen Daten) oder vom ältesten bis zum neuesten Datum oder der neuesten Uhrzeit (bei Daten und Uhrzeiten).

Abfrage

SELECT 
  first_name,
  last_name
FROM employees
ORDER BY last_name;

Erläuterung

Wir wählen wieder die Vor- und Nachnamen der Mitarbeiter aus. Aber jetzt wollen wir die Ausgabe auf eine bestimmte Weise sortieren. In diesem Beispiel ist es der Nachname der Mitarbeiter. Dazu verwenden wir ORDER BY. Darin geben wir einfach den Spaltennamen ein.

Danach können wir das Schlüsselwort ASC hinzufügen, um die Ausgabe aufsteigend zu sortieren. Dies ist jedoch nicht zwingend erforderlich, da die aufsteigende Sortierung eine Standardeinstellung in SQL ist.

Ausgabe

Die Abfrage gibt eine Liste von Mitarbeitern zurück, die alphabetisch nach ihren Nachnamen geordnet sind.

first_namelast_name
ClaudiaConte
WalterDeer
AstridFox
PaulGarrix
MatthiasJohnson
StephanieMarx
TomPage
LucyPatterson
LucaPavarotti
VictoriaPollock

7. Auswahl von zwei Spalten und absteigende Sortierung nach einer Spalte

Dieses Beispiel ähnelt dem vorherigen und hat den gleichen Zweck: die Sortierung der SQL-Abfrageausgabe. In diesem Fall werden die Daten jedoch in absteigender Reihenfolge sortiert (Z bis A, 10 bis 1).

Abfrage

SELECT 
  first_name,
  last_name
FROM employees
ORDER BY last_name DESC;

Erläuterung

Die Abfrage ist fast genau dieselbe wie im vorherigen Beispiel. Der einzige Unterschied ist, dass wir die Ausgabe nach dem Namen des Mitarbeiters absteigend sortieren.

Dazu fügen Sie das Schlüsselwort DESC nach der Spalte last_name in die Klausel ORDER BY ein.

Ausgabe

first_namelast_name
VictoriaPollock
LucaPavarotti
LucyPatterson
TomPage
StephanieMarx
MatthiasJohnson
PaulGarrix
AstridFox
WalterDeer
ClaudiaConte

Wie Sie sehen, ist die Ausgabe so geordnet, wie wir es wollten.

8. Auswählen von zwei Spalten aus einer Tabelle und absteigende Sortierung nach zwei Spalten

Das Sortieren einer SQL-Abfrage kann noch komplizierter werden. Es ist üblich, Daten nach zwei oder mehr Spalten zu sortieren, womit Sie als Excel- oder Google Sheets-Benutzer wahrscheinlich bereits vertraut sind. Das Gleiche kann in SQL gemacht werden.

Abfrage

SELECT 
  first_name,
  last_name,
  salary
FROM employees
ORDER BY salary DESC, last_name ASC;

Erläuterung

Mit dieser Abfrage bauen wir auf dem vorherigen Beispiel auf; wir möchten die Ausgabe nach dem Gehalt und dem Nachnamen des Mitarbeiters sortieren. Diesmal sortieren wir nach dem Gehalt absteigend und dann nach dem Nachnamen aufsteigend.

Wir verweisen auf die Spalte Gehalt in ORDER BY und folgen ihr mit dem Schlüsselwort DESC. Das Schlüsselwort DESC gibt die absteigende Reihenfolge an. Vor dem zweiten Ordnungskriterium müssen wir ein Komma setzen. Danach folgt das zweite Kriterium/Spalte, in diesem Fall last_name. Sie können das Schlüsselwort ASC hinzufügen oder weglassen, um die Ausgabe in aufsteigender Reihenfolge zu sortieren.

Hinweis: Die Reihenfolge der Spalten in ORDER BY ist wichtig! Die Abfrage, wie sie oben geschrieben ist, wird zuerst nach dem Gehalt absteigend und dann nach dem Nachnamen aufsteigend sortiert. Wenn Sie ORDER BY last_name ASC, salary DESC schreiben würden, würde zuerst nach dem Nachnamen und dann nach dem Gehalt in absteigender Reihenfolge sortiert.

Ausgabe

first_namelast_namesalary
TomPage5,974.41
VictoriaPollock4,789.53
ClaudiaConte4,714.12
LucaPavarotti4,123.45
WalterDeer3,547.25
PaulGarrix3,547.25
LucyPatterson3,547.25
MatthiasJohnson3,009.41
StephanieMarx2,894.51
AstridFox2,845.56

Die Ausgabe ist nach Gehalt geordnet. Wenn das Gehalt gleich ist (grüne Zeilen), werden die Daten alphabetisch nach dem Nachnamen sortiert.

9. Auswahl von zwei Spalten mit einer komplexen logischen Bedingung in WHERE

In diesem Beispiel wird erneut gezeigt, wie die Ausgabe mit WHERE gefiltert werden kann. Dieses Mal ist es etwas fortgeschrittener, da wir einen logischen Operator verwenden. In SQL können Sie mit logischen Operatoren testen, ob die Filterbedingung erfüllt ist oder nicht. Sie ermöglichen auch die Festlegung mehrerer Bedingungen.

Die drei grundlegenden logischen Operatoren in SQL sind AND, OR und NOT. In der folgenden Abfrage verwenden wir OR, um Gehälter unter 3.000 oder über 5.000 zu erhalten.

Abfrage

SELECT 
  first_name,
  last_name,
  salary
FROM employees
WHERE salary > 5000 OR salary < 3000;

Erläuterung

Wir verwenden diese Abfrage, um den Vornamen, den Nachnamen und das Gehalt des Mitarbeiters aus der Tabelle auszuwählen employees.

Wir möchten jedoch nur die Mitarbeiter anzeigen, deren Gehalt entweder über 5.000 $ oder unter 3.000 $ liegt. Dazu verwenden wir den logischen Operator OR und die Vergleichsoperatoren in WHERE.

Wir schreiben die erste Bedingung in WHERE, wo wir auf die Spalte salary verweisen und die Bedingung festlegen, dass die Werte über 5.000 liegen müssen. Dann verwenden wir den Operator OR, gefolgt von der zweiten Bedingung. Die zweite Bedingung verweist wiederum auf die Spalte "Gehalt" und verwendet den Operator "kleiner als", um die Werte unter 3.000 zurückzugeben.

Ausgabe

first_namelast_namesalary
AstridFox2,845.56
TomPage5,974.41
StephanieMarx2,894.51

Die Abfrage gibt nur drei Mitarbeiter und ihre Gehälter zurück, da nur sie die Bedingungen erfüllen.

10. Einfache Berechnungen auf Spalten

In diesem Beispiel zeigen wir, wie Sie einfache mathematische Operationen mit den Spalten der Tabelle durchführen können.

Wir werden einen der arithmetischen Operatoren von SQL verwenden.

Arithmetic OperatorDescription
+Addition
-Subtraction
*Multiplication
/Division
%Modulo, i.e. returns the remainder of the integer division.

Abfrage

SELECT 
  employee_id,
  q1_2022 + q2_2022 AS h1_2022
FROM quarterly_sales;

Erläuterung

In der obigen Abfrage wollen wir den Umsatz im ersten Halbjahr 2022 für jeden Mitarbeiter finden.

Dazu wählen wir zunächst die Spalte employee_id aus der Tabelle quarterly_sales aus.

Dann wählen wir die Spalte q1_2022 aus und verwenden den arithmetischen Operator Addition, um die Spalte q2_2022 hinzuzufügen. Außerdem geben wir dieser neuen berechneten Spalte mit dem Schlüsselwort AS einen Alias von h1_2022.

Ausgabe

employee_idh1_2022
818,260.66
418,264.04
102,817.18
117,181.20
337,558.82
210,092.45
733,695.03
611,240.08
513,905.29
98,586.86

Die Ausgabe zeigt alle IDs der Mitarbeiter und ihre jeweiligen Umsätze im ersten Halbjahr 2022.

11. Verwendung von SUMME() und GRUPPE BY

Diese Abfrage verwendet die Aggregatfunktion SUM() mit GROUP BY. In SQL arbeiten Aggregatfunktionen mit Datengruppen; zum Beispiel zeigt SUM(sales) die Summe aller Werte in der Spalte sales. Es ist nützlich, diese Funktion zu kennen, wenn Sie Daten in Gruppen zusammenfassen und die Summe für jede Gruppe anzeigen möchten.

Abfrage

SELECT 
  department,
  SUM(salary) AS total_salaries
FROM employees
GROUP BY department;

Erläuterung

Der Zweck der obigen Abfrage ist es, den Gesamtbetrag der Gehälter für jede Abteilung zu ermitteln. Dies wird auf folgende Weise erreicht.

Wählen Sie zunächst die Spalte Abteilung aus der Tabelle employees aus. Dann verwenden Sie die Funktion SUM(). Da wir die Gehaltswerte addieren wollen, geben wir in der Funktion die Spalte Gehalt an. Außerdem geben wir dieser berechneten Spalte den Alias total_salaries.

Schließlich wird die Ausgabe nach der Spalte Abteilung gruppiert.

Hinweis: Jede nicht gruppierte Spalte, die in SELECTerscheint , muss auch in GROUP BY erscheinen . Aber das ist logisch - der ganze Zweck ist es, die Daten nach Abteilung zu gruppieren, also werden wir sie natürlich in GROUP BY einfügen.

Ausgabe

departmenttotal_salaries
Corporate21,919.82
Private Individuells17,072.92

Die Ausgabe zeigt alle Abteilungen und die Summe der gesamten monatlichen Lohnkosten pro Abteilung.

12. Verwendung von COUNT() und GROUP BY

Hier ist eine weitere einfache SQL-Abfrage, die eine Aggregatfunktion verwendet. Diesmal ist es COUNT(). Sie können sie verwenden, wenn Sie Daten gruppieren und die Anzahl der Vorkommen in jeder Gruppe anzeigen möchten.

Abfrage

SELECT 
  department,
  COUNT(*) AS employees_by_department
FROM employees
GROUP BY department; 

Erläuterung

Wir möchten die Anzahl der Mitarbeiter nach Abteilung anzeigen.

Wählen Sie die Abteilung aus der Tabelle employees aus. Verwenden Sie dann die Aggregatfunktion COUNT(). In diesem Fall verwenden wir die Version COUNT(*), die alle Zeilen zählt. Wir geben der Spalte den Alias employees_by_department.

Als letzten Schritt gruppieren wir die Ausgabe nach der Abteilung.

Hinweis: COUNT(*) zählt alle Zeilen, einschließlich derjenigen mit den Werten NULL. Wenn Sie die möglichen NULL-Werte nicht in Ihre Ausgabe aufnehmen wollen, verwenden Sie die COUNT(column_name) Version der Funktion. Wir können hier COUNT(*) verwenden, da wir wissen, dass keine NULL Werte in der Tabelle vorhanden sind.

Ausgabe

departmentemployees_by_department
Corporate5
Private Individuells5

Es gibt zwei Abteilungen mit jeweils fünf Mitarbeitern.

13. Verwendung von AVG() und GROUP BY

Die Funktion AVG() berechnet den Durchschnittswert. Sie können diese Abfrage immer dann verwenden, wenn Sie Daten gruppieren und den Durchschnittswert für jede Gruppe anzeigen möchten.

Abfrage

SELECT 
  department,
  AVG(salary) AS average_salary
FROM employees
GROUP BY department; 

Erläuterung

Die Abfrage ist die gleiche wie die letzte, nur verwenden wir diesmal die Funktion AVG(), da wir das Durchschnittsgehalt nach Abteilung berechnen wollen.

Wir wählen die Abteilung aus, verwenden AVG() mit der Spalte salary, und gruppieren die Ausgabe nach Abteilung.

Ausgabe

departmentaverage_salary
Corporate4,383.96
Private Individuells3,414.58

Die Ausgabe zeigt zwei Abteilungen und ihre Durchschnittsgehälter.

14. Verwendung von MIN() und GROUP BY

Dies ist eine weitere Abfrage, die eine Aggregatfunktion mit GROUP BY kombiniert. Verwenden Sie sie immer dann, wenn Sie die Mindestwerte für jede Gruppe finden möchten.

Abfrage

SELECT 
  department,
  MIN(salary) AS minimum_salary
FROM employees
GROUP BY department;

Erläuterung

Wir verwenden wieder dieselbe Abfrage und ändern nur die Aggregatfunktion.

Die Abfrage berechnet das Mindestgehalt nach Abteilung.

Ausgabe

departmentminimum_salary
Corporate2,894.51
Private Individuells2,845.56

Die Ausgabe zeigt die Abteilungen und das niedrigste Gehalt in jeder Abteilung.

15. Verwendung von MAX() und GROUP BY

Dieses Beispiel zeigt, wie Sie die Aggregatfunktion MAX() verwenden, um den höchsten Wert innerhalb jeder Gruppe anzuzeigen.

Abfrage

SELECT 
  department,
  MAX(salary) AS maximum_salary
FROM employees
GROUP BY department;

Erläuterung

Wir verwenden die Abfrage, um das höchste Gehalt in jeder Abteilung zusammen mit dem Namen der Abteilung anzuzeigen.

Sie wissen bereits, wie das funktioniert. Die Abfrage ist dieselbe wie im vorigen Beispiel, aber jetzt wird die Funktion MAX() verwendet.

Ausgabe

departmentmaximum_salary
Corporate5,974.41
Private Individuells4,123.45

Die Ausgabe zeigt uns die höchsten Gehälter in der Abteilung Corporate and Private Individuells.

16. Verwendung von SUM(), WHERE und GROUP BY

Diese Abfrage mag komplizierter erscheinen, ist aber dennoch eine grundlegende SQL-Abfrage. Sie wird verwendet, wenn Sie die Gesamtwerte für jede Gruppe anzeigen möchten, aber nur bestimmte Zeilen in die Summe einbeziehen wollen.

Abfrage

SELECT 
  department,
  SUM(salary) AS total_salary
FROM employees
WHERE salary > 3500
GROUP BY department;

Erläuterung

Die Abfrage zeigt die Gesamtsumme der Gehälter nach Abteilung an, bezieht aber nur einzelne Gehälter über 3.500 $ in die Summe ein. So funktioniert sie.

Zuerst wählen Sie natürlich die Abteilungen aus und verwenden SUM() mit der Gehaltsspalte aus der Tabelle employees. Das haben Sie bereits gelernt.

Dann verwenden Sie die Klausel WHERE, um die Werte anzugeben, die in die Summe eingehen sollen. In diesem Fall ist es, wenn die Spalte Gehalt höher als 3.500 ist. Mit anderen Worten, die Abfrage summiert jetzt nur Werte über 3.500.

Schließlich gruppieren Sie nach Abteilung.

Ausgabe

departmenttotal_salary
Private Individuells11,217.95
Corporate19,025.31

Diese Gesamtbeträge enthalten jetzt nur noch Gehälter über 3.500 $. Vergleichen Sie dies mit der Ausgabe des elften Beispiels (siehe unten; beachten Sie die unterschiedliche Sortierung), und Sie werden sehen, dass die Gesamtsummen niedriger sind. Das ist logisch, da die untenstehende Ausgabe auch Gehälter von 3.500 $ oder weniger enthält.

departmenttotal_salaries
Corporate21,919.82
Private Individuells17,072.92

17. Verwendung von COUNT(), WHERE und GROUP BY

Dies ist ebenfalls eine der Abfragen, die wir Ihnen empfehlen, in Ihre SQL-Toolbox aufzunehmen. Sie ähnelt der vorherigen Abfrage, da sie eine Aggregatfunktion verwendet. Diese Art der Abfrage kann verwendet werden, wenn Sie die Anzahl der Vorkommen für jede Gruppe anzeigen möchten.

Abfrage

SELECT 
  department,
  COUNT(*) AS number_of_employees
FROM employees
WHERE salary > 3500
GROUP BY department;

Erläuterung

Diese Abfrage ähnelt der vorherigen Abfrage, nur dass sie die Aggregatfunktion COUNT() verwendet. Ihr Ziel ist es, den Namen der Abteilung und die Anzahl der Mitarbeiter in dieser Abteilung anzuzeigen, aber sie zählt nur die Mitarbeiter mit einem Gehalt über 3.500 $.

To achieve that, first select the department. Then use COUNT(*), um alle Zeilen innerhalb jeder Abteilung zu zählen. Jede Zeile entspricht einem Mitarbeiter. Es steht uns frei, diese Version der Funktion COUNT() zu verwenden, da wir wissen, dass es keine NULL Zeilen gibt.

Verwenden Sie nun WHERE, um nur Mitarbeiter mit Gehältern über 3500 $ in die Zählung einzubeziehen.

Am Ende müssen Sie die Daten nur noch nach Abteilung gruppieren.

Ausgabe

departmentnumber_of_employees
Private Individuells3
Corporate4

Die Ausgabe zeigt, dass es drei Angestellte in der Abteilung Privat Individuellgibt, die mehr als 3.500 $ verdienen, und vier Angestellte in der Abteilung Unternehmen.

Offensichtlich fehlen einige Angestellte, wie es auch sein sollte. In einem der vorherigen Beispiele haben wir gelernt, dass es in jeder Abteilung fünf Angestellte gibt.

18. Zugriff auf Daten in zwei Tabellen mit INNER JOIN

Diese Art der Abfrage wird immer dann verwendet, wenn Sie auf Daten aus zwei oder mehr Tabellen zugreifen möchten. Wir zeigen Ihnen INNER JOIN, aber das ist nicht der einzige Join-Typ, den Sie verwenden können.

Hier ist ein kurzer Überblick über die Join-Typen in SQL. Dies sind die vollständigen Join-Namen. Was in den Klammern steht, kann in der Abfrage weggelassen werden, und der Join funktioniert auch ohne diese Angaben.

SQL Join TypeDescription
(INNER) JOINReturns the matching values from both tables.
LEFT (OUTER) JOINReturns all the values from the left table and only the matching values from the right table.
RIGHT (OUTER) JOINReturns all the values from the right table and only the matching values from the left table.
FULL (OUTER) JOINReturns all the rows from both tables.
CROSS JOINReturns all combinations of all rows from the first and second table, i.e. the Cartesian product.

Abfrage

SELECT 
  e.id,
  e.first_name,
  e.last_name,
  qs.q1_2022 + qs.q2_2022 + qs.q3_2022 + qs.q4_2022 AS total_sales_2022
FROM employees e 
JOIN quarterly_sales qs
ON e.id = qs.employee_id;

Erläuterung

Diese Abfrage möchte die ID und den Namen jedes Mitarbeiters zusammen mit seinem Gesamtumsatz im Jahr 2022 anzeigen.

Dazu verwendet sie JOIN, da die erforderlichen Daten in beiden Tabellen unseres Datensatzes enthalten sind.

Beginnen wir die Erklärung der Abfrage mit der FROM Klausel. Sie ist bekannt: Um die Daten aus der Tabelle employees zu verwenden, müssen Sie sie in FROM referenzieren. Wir geben dieser Tabelle auch einen Alias ("e"), damit wir später nicht den vollen Namen der Tabelle schreiben müssen.

Danach verwenden wir das Schlüsselwort JOIN, um die zweite Tabelle zu verbinden. Dazu verweisen wir auf die Tabelle quarterly_sales in JOIN und geben ihr den Alias 'qs'.

Nun folgt die Bedingung ON. Sie wird verwendet, um die Spalten anzugeben, über die die beiden Tabellen verbunden werden sollen. Normalerweise sind das die Spalten, die in beiden Tabellen die gleichen Daten enthalten. Mit anderen Worten, wir verbinden die Tabellen über die Primär- und Fremdschlüssel. Ein Primärschlüssel ist eine Spalte (oder Spalten), die jede Zeile in der Tabelle eindeutig definiert. Ein Fremdschlüssel ist eine Spalte in der zweiten Tabelle, die sich auf die erste Tabelle bezieht. In unserem Beispiel ist die Spalte id aus der Tabelle employees der Primärschlüssel. Die Spalte employee_id aus der Tabelle quarterly_sales ist der Fremdschlüssel, da sie den Wert der Spalte id aus der ersten Tabelle enthält.

Wir werden diese Spalten also in ON verwenden, müssen aber auch angeben, aus welcher Tabelle jede Spalte stammt. Erinnern Sie sich daran, dass wir unseren Tabellen Aliasnamen gegeben haben. Das ist hier sehr nützlich, da wir nicht die vollständigen Namen der Tabellen schreiben müssen, sondern nur einen Buchstaben für jede Tabelle. Wir schreiben den Alias der ersten Tabelle (anstelle ihres vollständigen Namens), trennen sie mit einem Punkt und dann den Spaltennamen. Wir setzen das Gleichheitszeichen, den Alias der zweiten Tabelle und den Spaltennamen ein.

Nun, da wir zwei Tabellen verbunden haben, können wir jede Spalte aus beiden Tabellen auswählen. Wir wählen id, first_name und last_name aus employees aus. Dann fügen wir jede Spalte aus der Tabelle quarterly_sales hinzu, die die Quartalsumsätze anzeigt, und nennen sie total_sales_2022. Jeder Spalte in SELECT wird auch der Tabellenalias vorangestellt, wobei der Alias und der Spaltenname durch einen Punkt getrennt sind.

Hinweis: Bei der Verknüpfung von Tabellen ist es ratsam, die Tabellennamen vor den Spaltennamen in SELECT zuverwenden . So lässt sich leichter feststellen, welche Spalte aus welcher Tabelle stammt. Außerdem können die Tabellen gleichnamige Spalten haben. Allerdings können Tabellennamen wortreich werden, so dass es auch ratsam ist, ihnen in JOIN Aliasnamen zu geben. Auf diese Weise können Sie viel kürzere Aliasnamen (anstelle der vollständigen Tabellennamen) vor den Spaltennamen verwenden.

Ausgabe

idfirst_namelast_nametotal_sales_2022
8StephanieMarx22,993.23
4LucyPatterson30,595.57
10VictoriaPollock6,770.16
1PaulGarrix45,443.38
3MatthiasJohnson58,233.67
2AstridFox20,312.48
7WalterDeer62,774.59
6ClaudiaConte17,734.94
5TomPage28,637.65
9LucaPavarotti25,023.21

Die Ausgabe listet jeden Mitarbeiter auf und zeigt seinen Gesamtumsatz im Jahr 2022.

19. Zugriff auf Daten in zwei Tabellen mit INNER JOIN und Filterung mit WHERE

Natürlich können Sie Daten in verknüpften Tabellen auf die gleiche Weise filtern, wie Sie es mit nur einer Tabelle können. Dazu benötigen Sie wieder die WHERE Klausel.

Abfrage

SELECT
  e.id,
  e.first_name,
  e.last_name,
  qs.q4_2022-qs.q3_2022 AS sales_change
FROM employees e 
JOIN quarterly_sales qs
ON e.id = qs.employee_id
WHERE qs.q4_2022-qs.q3_2022 < 0;

Erläuterung

Wir haben die vorherige Abfrage so verändert, dass der Umsatzrückgang zwischen dem dritten und dem vierten Quartal angezeigt wird.

So haben wir es gemacht. Genau wie zuvor haben wir die ID und den Namen des Mitarbeiters ausgewählt.

Wir haben ein Quartal vom anderen subtrahiert, um die Veränderung zwischen den Quartalen zu berechnen. In diesem Fall handelt es sich um die Spalte mit dem Umsatz des vierten Quartals abzüglich des Umsatzes des dritten Quartals. Diese neue Spalte heißt sales_change.

Die Tabellen werden auf die gleiche Weise wie im vorherigen Beispiel verbunden.

Um nur den Umsatzrückgang anzuzeigen, verwenden wir die Klausel WHERE. Darin subtrahieren wir wiederum das dritte Quartal vom vierten und legen die Bedingung fest, dass das Ergebnis unter Null liegen muss, d. h. ein Rückgang. Wie Sie gesehen haben, kommt WHERE nach der Verknüpfung der Tabellen.

Ausgabe

idfirst_namelast_namesales_change
8StephanieMarx-2,224.11
4LucyPatterson-5,151.55
1PaulGarrix-21,233.46
3MatthiasJohnson-3,771.83
7WalterDeer-189.32
6ClaudiaConte-1,500.44
9LucaPavarotti-1,138.55

Die Ausgabe zeigt alle Arbeitnehmer, die im letzten Quartal einen Umsatzrückgang zu verzeichnen hatten, und den Betrag dieses Rückgangs.

20. Zugriff auf Daten in zwei Tabellen mit INNER JOIN, Filtern mit WHERE und Sortieren mit ORDER BY

Sie haben wahrscheinlich bemerkt, dass die Ausgaben in unseren beiden letzten Beispielen etwas willkürlich sortiert sind. Damit müssen Sie sich nicht abfinden - Sie können die Daten mit ORDER BY auch bei Verwendung von zwei Tabellen ordnen.

Abfrage

SELECT 
  e.id,
  e.first_name,
  e.last_name,
  qs.q4_2022
FROM employees e 
JOIN quarterly_sales qs
ON e.id = qs.employee_id
WHERE qs.q4_2022 > 5000
ORDER BY qs.q4_2022 DESC;

Erläuterung

Die Abfrage unterscheidet sich nicht wesentlich von der vorherigen. Wir wählen wieder die ID und den Namen des Mitarbeiters aus. Wir fügen auch die Umsätze im letzten Quartal des Jahres hinzu. Die Tabellen werden dann auf dieselbe Weise verbunden wie zuvor. Wir verwenden die WHERE Klausel, um nur die vierteljährlichen Verkäufe über 5.000 $ anzuzeigen.

Außerdem wollen wir die Ausgabe sortieren. Dies unterscheidet sich nicht von dem, was wir zuvor gelernt haben: Schreiben Sie einfach den Spaltennamen in ORDER BY und sortieren Sie ihn auf die gewünschte Weise. In unserem Beispiel sortieren wir nach dem höchsten und dem niedrigsten Quartalsumsatz.

Ausgabe

idfirst_namelast_nameq4_2022
7WalterDeer14,445.12
3MatthiasJohnson8,451.51
5TomPage7,788.01
9LucaPavarotti7,648.90
2AstridFox5,322.05

Die Ausgabe zeigt alle fünf Mitarbeiter, deren Umsatz in den letzten drei Monaten des Jahres 2022 über 5.000 $ lag.

Von grundlegenden SQL-Abfragen zum SQL-Master

Wenn Sie SQL beherrschen wollen, müssen Sie mit diesen 20 grundlegenden SQL-Abfragen vertraut sein. Dies sind die Grundlagen, die es Ihnen ermöglichen, solide SQL-Kenntnisse aufzubauen.

Diese Art von Wissen erlangt man durch viel Übung und Erfahrung. Mit anderen Worten: Sie müssen die Abfragen einfach selbst schreiben. Auf diese Weise werden Sie alle Konzepte, die Sie hier gelernt haben, festigen. Dabei werden Sie wahrscheinlich eine Menge Fehler machen. Das ist wünschenswert, denn es gibt keine bessere Art zu lernen, als zu versuchen, die eigenen Fehler zu korrigieren.

Dafür brauchen Sie viele Abfragebeispiele. Nein, es ist nicht nötig, eigene Beispiele zu erstellen, wie wir es hier getan haben. Sie können, wenn Sie wollen. Aber das haben wir bereits in unserem Kurs SQL für Anfänger für Sie getan.

Er ist randvoll mit Beispielen für grundlegende SQL-Abfragen! Probieren Sie es aus, und Sie werden es sicher nicht bereuen!