SQL Abfrage

drogba941

Benutzer
Beiträge
9
Hi Leute! Ich bin totaler SQL Anfänger und habe zwei SQL Aufgaben, wo ich mir nicht sicher bin wie das genau funktioniert.

Aufgabe 1:
Patient (#PID, Nachname, Vorname, Geburtsdatum, Telefon)
Behandlung (#BID, PID, Datum)

a) Es sollen die Anzahlen der Behandlungen jedes Patienten im Jahr 2020 sowie dessen Nach- und Vorname ausgegeben werden.

Ansatz:
SELECT COUNT (#BID), Nachname, Vorname FROM Behandlung INNER JOIN Patient....

Aufgabe 2:
Leider habe ich keine Ansätze bei Aufgabe 2 aber hoffe ihr könnt mir helfen damit ich in Zukunft ein Muster habe.

Kunde (#K_ID, Firma, Strasse, PLZ, Ort)
Rechnung (#R_ID, K_ID, RechDatum)
Position (#R_ID, #A_ID, Menge, Verkaufspreis)
Artikel (#A_ID, H_ID, Bezeichnung, ListenPreis)
Hersteller (#H_ID, Firma)

a) Erstellen Sie eine Liste aller Kunden mit Anzahl der Rechnungen im Jahr 2020. Ausgegeben werden sollen die K_ID, Firma und Anzahl, absteigend sortiert nach Anzahl.

b) Erstellen Sie eine Liste aller Kunden mit dem Umsatz je bezogenem Artikel. Ausgeben werden sollen: K_ID, Firma, Artikelbezeichnung, Umsatz mit dem Artikel

Vielen Dank.
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.612
1a: wichtig ist noch das GROUP BY, kennst Du sicher ...
2a: auch hier ein JOIN mit einem COUNT und GROUP BY
2b: JOIN über 5 Tabellen, SUM() statt COUNT. Rest trivial.
 

drogba941

Benutzer
Beiträge
9
ich habe nun folgende Ansätze:

1a)

SELECT COUNT (BID), Nachname, Vorname
FROM Behandlung
INNER JOIN Patient USING (PID)
WHERE Datum BETWEEN 20200101 AND 20201231;

2b)

SELECT K_ID, Firma, Bezeichnung, SUM ( VerkaufsPreis * Menge) AS Umsatz FROM Kunde
INNER JOIN Rechnung USING (K_ID)
INNER JOIN Position USING (R_ID)
INNER JOIN Artikel USING (A_ID)


Vielen Dank für deine Antwort. Kann das so funktionieren ?
 

drogba941

Benutzer
Beiträge
9
Die Aufgaben sind von einem Arbeitsblatt. Ich wüsste nicht wie ich die probieren soll. Deine Hinweise konnte ich leider nicht Umsetzen
 

drogba941

Benutzer
Beiträge
9
Also so ?

1a)

SELECT COUNT (BID), Nachname, Vorname
FROM Behandlung
INNER JOIN Patient USING (PID)
WHERE Datum BETWEEN 20200101 AND 20201231;
GROUP BY BID

2b)

SELECT K_ID, Firma, Bezeichnung, SUM ( VerkaufsPreis * Menge) AS Umsatz FROM Kunde
INNER JOIN Rechnung USING (K_ID)
INNER JOIN Position USING (R_ID)
INNER JOIN Artikel USING (A_ID)
GROUP BY K_ID
 

drogba941

Benutzer
Beiträge
9
1a)

SELECT COUNT (BID), Nachname, Vorname
FROM Behandlung
INNER JOIN Patient USING (PID)
GROUP BY PID
HAVING Datum BETWEEN 20200101 AND 20201231;

Mir gehen die Ideen aus
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.612
Das bringt doch nichts. Installier Dir z.B. PostgreSQL oder nutze das Fiddle und probiere es aus. Dir jetzt die Antwort zu geben hätte exakt NULL Lerneffekt. Oder besser, SQL-technisch: 0 Lerneffekt. Ja, da ist ein Unterschied ...
 
Oben