Aggregatfunktion Aufgabe

_Mind_

Neuer Benutzer
Beiträge
3
Heyho liebe Community,

ich habe im Rahmen meines Wirtschaftsinformatik-Studiums eine Reihe von SQL-Aufgaben zu lösen.
Ich würde mich freuen, wenn ich mir bei dieser helfen könntet:

Gegeben sei folgendes Schema zur Erfassung von Kundenbestellungen:

Produkt (PID, Art, Hersteller, Bezeichnung)
Kunde (KNR, Name, Alter, Bonuspunkte)
Kauf (PID, KNR, Zeitstempel, Preis, Menge) ---Preis in Euro und Menge >= 1
PID ist Fremdschlüssel auf Produkt, KNR ist Fremdschlüssel auf Kunde.


Welche Kunden(Name) haben bereits mehr als 100 Produkte gekauft?

(Hinweis: Mehrfachkäufe eines Produktes (z.B. Menge=3) sollen mitgezählt werden)

Mein Lösungsvorschlag:

SELECT K.Name
FROM Kunde K
WHERE 100 < (SELECT sum(Ka.Menge)
FROM Kauf Ka
WHERE K.KNR = Ka.KNR)


Ich kann es leider nicht selbst überprüfen (bzw. wüsste nicht wie oder wo), daher wäre ich über Feedback dankbar!

Grüße
_Mind_
 
Werbung:
Ich habe beim Googeln keinen so schnellen Weg gefunden, zumindest keinen, der den Rahmen dieser Aufgabe nicht sprengen würde.
Wärest du so net und würdest mir Feedback zu meinem Lösungsvorschlag geben?
 
Code:
test=# create table kunde (id int primary key);
CREATE TABLE
test=*# create table kauf(kunde int references kunde, menge int);
CREATE TABLE
test=*# insert into kunde values (1);
INSERT 0 1
test=*# insert into kunde values (2);
INSERT 0 1
test=*# insert into kauf values (1, 60);
INSERT 0 1
test=*# insert into kauf values (1, 60);
INSERT 0 1
test=*# insert into kauf values (2, 60);
INSERT 0 1
test=*# select k.id from kunde k left join kauf ka on k.id = ka.kunde group by k.id having sum(menge) > 100;
 id
----
  1
(1 Zeile)

test=*# rollback;
ROLLBACK
 
das wäre der weg, den ich nehmen würde. Again: installier Dir lokal eine DB (z.B. PostgreSQL) und spiele damit. Das kostet nix und tut auch nicht weh.
 
Werbung:
Dein Select sieht richtig aus, ob er unter MySQL funktionieren wird weiß ich nicht, unter MSSQL schon. Die Lösung mit JOIN und HAVING von akretschmer ist aber meiner Meinung nach der elegantere Weg.
 
Zurück
Oben