``# SQL Rallye
Short-Link zur SQL Rallye https://t1p.de/ozjpd

---
### Umgebung für die SQL-Rallye
#### In dieser Variante verwenden wir den Raspberry PI. Das ISO-Image könnt ihr euch über diesen NextCloud Link runterladen.

---
## Aufgaben
Verschafft euch einen Überblick
Analysiert die Datenbank - welche Attribute haben die einzelnen Tabellen?
---
### Datenbankmodell

---
- Wieviele Kunden befinden sich in der Datenbank?
- Wieviele Rechnungen wurden bislang geschrieben?
- Wieviele Produkte sind in der Artikel Datenbank?
- Wieviele Kunden haben ein Geburtsdatum angegeben
- Welches Bundesland hat wieviele Kunden?
- Wieviele Kunden haben eine Email-Adresse? Wie hoch ist die Quote?
- Zeige eine Übersicht über die Gender-Code Verteilung des gesamten Kundenstamms!
- Da es sich um eine Schuhdatenbank handelt und jeder Schuh mit jeder Schuhgröße einen Eintrag hat - möchten wir wissen;
- wie viele Schuhprodukte es gibt
- die Schuhgröße soll nicht berücksichtigt werden.)
- Wieviele unterschiedliche Hersteller sind in der Datenbank?
- Wer ist der älteste Kunde?
- Wer ist der jüngste Kunde?
- Zeige alle Rechnungsnummern zu einem Kunden?
- Welcher Schuh wurde am häufigsten verkauft?
Bemerkung - Bei der Suche sind die Kriterien, das Modell und die Schuhgröße
- Welches Modell wurde wie oft verkauft? Die Schuhgröße soll nicht berücksichtigt werden.
Welche Rechnung hat die meisten Rechnungspositionen?
Selektiere die teuerste Rechnung?
Selektiere die teuerste Rechnung und gebe auch den Nachnamen aus.
Wieviele Kunden haben keine Rechnung bislang generiert?
Wieviele Kunden haben den Gender-Code d=divers, w=weiblich, m=männlich. Verteilung nach Bundesland
Ermittelt den durchschnittlichen Rechnungsbetrag der erzeugten Rechnungen.
Von welcher Firma wurden die meisten Schuhe verkauft?
---
#### Wieviele Kunden befinden sich in der Datenbank?
```sql
SELECT ...
```
#### Wieviele Rechnungen wurden bislang geschrieben?
```sql
SELECT ....
```
#### Wieviele Produkte sind in der Artikel Datenbank?
```sql
SELECT ....
```
#### Wieviele Kunden haben ein Geburtsdatum angegeben
```sql
Select Count(Kdnr)
from Kunden k
where k.Geburtsdatum != ''
```
#### Welches Bundesland hat wieviele Kunden?
```sql
SELECT ....
```
#### Wieviele Kunden haben eine Email-Adresse? Wie hoch ist die Quote?
```sql
Select Count(k.KdNr) * 100 / (Select Count(k.KdNr) as Anzahl_Kunden
FROM Kunden k)
FROM Kunden k
where k.EMail != ''
SELECT (CAST(COUNT(*) AS FLOAT) / (SELECT COUNT(*) FROM Kunden)) * 100 AS QuoteKundenMitEmail FROM Kunden WHERE EMail <> '';
```
Hallo
#### Zeige eine Übersicht über die Gender-Code Verteilung des gesamten Kundenstamms!
```sql
SELECT ArtName, COUNT(*) FROM Artikel GROUP BY ArtName;
SELECT COUNT(CASE WHEN k.Gender = 'm' THEN 1 END) AS Männlich
, COUNT(CASE WHEN k.Gender = 'w' THEN 1 END) AS Weiblich
, COUNT(CASE WHEN k.Gender = 'd' THEN 1 END) AS Divers FROM
Kunden AS k GROUP BY k.Gender
Select k.Gender, COUNT(KdNr)
from Kunden k
GROUP by k.Gender
```
#### Da es sich um eine Schuhdatenbank handelt und jeder Schuh mit jeder Schuhgröße einen Eintrag hat - möchten wir wissen wieviele Schuh-Produkte es gibt - die Schuhgröße soll nicht berücksichtigt werden.
```sql
SELECT
```
#### Wieviele unterschiedliche Hersteller sind in der Datenbank?
```sql
SELECT COUNT(DISTINCT ArtHersteller) AS VerschiedeneHersteller FROM Artikel;
```
#### Wer ist der älteste Kunde?
```sql
SELECT * FROM Kunden WHERE Geburtsdatum <> "" ORDER BY STR_TO_DATE(Geburtsdatum, '%d.%m.%Y') ASC LIMIT 1;
Select k.KdNr,k.Anrede,k.Vorname,k.Nachname, min(k.Geburtsdatum)
from Kunden k
where k.Geburtsdatum != ''
ORDER by k.Geburtsdatum DESC
LIMIT 1;
```
Select min(STR_TO_DATE(Kunden.Geburtsdatum, '%d.%m.%Y')) as Geburtsdatum from Kunden where Kunden.Geburtsdatum not like "";
#### Wer ist der jüngste Kunde?
```sql
```
#### Zeige mir alle Rechnungs-Nummern zu einem Kunden?
```sql
```
#### Welcher Schuh wurde am häufigsten verkauft?
**Bemerkung - Bei der Suche sind die Kriterien das Modell und die Schuhgröße.**
```sql
```
#### Welches Modell wurde wie oft verkauft? Die Schuhgröße soll nicht berücksichtigt
```sql
SELECT
```
#### Welche Rechnung hat die meisten Rechnungs-Positionen?
```sql
Select ;
```
#### Selektiere die teuerste Rechnung?
```sql
Select ;
SELECT k.Nachname, k.Vorname, r.RechNr, SUM(a.ArtPreis) AS Summe FROM Rechnung AS r LEFT JOIN Artikelbestellung AS ab ON r.RechNr = ab.RechNr LEFT JOIN Artikel AS a ON ab.ArtikelNr = a.ArtNr LEFT JOIN Kunden AS k ON r.KdNr = k.KdNr GROUP BY r.RechNr ORDER BY Summe DESC
Select ab.RechNr, sum(a.ArtPreis) as summe
from Artikelbestellung ab
inner join Artikel a on a.ArtNr = ab.ArtikelNr
GROUP by ab.RechNr
ORDER by summe DESC
LIMIT 1;
```
:) :)
#### Selektiere die teuerste Rechnung und gebe auch den Nachnamen aus.
```sql
Select ;
```
#### Wieviele Kunden haben keine Rechnung bislang generiert?
```sql
SELECT ;
```
#### Wieviele Kunden haben den Gender-Code d=divers, w=weiblich, m=männ ich. Verteilung nach Bundesland
```sql
select ;
```
#### Ermittelt den durchschnittlichen Rechnugsbetrag.
```sql
SELECT ;
```
#### Von welcher Firma wurden die meisten Schuhe verkauft?
```sql
SELECT ;
```