Frage an alle Datenbank- / SQL-Experten

Diskutiere Frage an alle Datenbank- / SQL-Experten im Off Topic Forum im Bereich Sonstiges; Hallo Experten! Im Rahmen meines Studiums bereite ich mich gerade auf eine Klausur zum Thema 'Relationale Datenbanken' vor. In einer...
  • Frage an alle Datenbank- / SQL-Experten Beitrag #1
P

Passatcruiser

Beiträge
25
Reaktionspunkte
0
Ort
40593 Düsseldorf; 38448 Wolfsburg
Hallo Experten!

Im Rahmen meines Studiums bereite ich mich gerade auf eine Klausur zum Thema 'Relationale Datenbanken' vor.
In einer Vorgänger-Klausur kommt folgende SQL-Anweisung vor:

SELECT * FROM Kunden K1
WHERE rabatt > (SELECT AVG (rabatt) FROM Kunden K2
WHERE K1.Wohnort = K2.Wohnort AND K1.KundenNr =K2.KundenNr);


Wir sollen jetzt formulieren, was mit Hilfe dieser Anweisung abgefragt wird.

Die Lösung lautet: "Gebe alle Kunden aus, deren Rabatt höher ist als der durchschnittliche Rabatt aller anderen Kunden desselben Wohnortes."

Jetzt die Frage: Kann das sein, dass die SQL-Anweisung einen Fehler enthält. Ich kann das Ding so nämlich trotz gutem Skript und mehrerer Bücher nicht nachvollziehen. Allerdings reicht mein SQL-Wissen nicht aus, um einen eventuellen Fehler zu finden.
Ich wäre wirklich sehr sehr dankbar, wenn mir jemand weiterhelfen könnte....
 
  • Frage an alle Datenbank- / SQL-Experten

Anzeige

  • Frage an alle Datenbank- / SQL-Experten Beitrag #3
Tom

Tom

Beiträge
4.952
Reaktionspunkte
1
Ort
Dresden
Ohne jetzt ein Experte zu sein:

Es werden Daten aus 2 Tabellen ausgelesen (K1 und K2), wobei alles von K1 angezeigt werden soll, was der Bedingung "rabatt > Durchschnittlicher Rabatt K2" entspricht, wobei Wohnort und Kundennummer in beiden Tabellen gleich sein müssen.

SELECT * FROM Kunden K1
WHERE rabatt > (SELECT AVG (rabatt) FROM Kunden K2
WHERE K1.Wohnort = K2.Wohnort AND K1.KundenNr = K2.KundenNr);

"übersetzt" ;) wäre das in etwa

Zeige alles von Kunden K1
wobei rabatt größer als (zeige Durchschnitt von (rabatt) von Kunden K2
bei denen K1.Wohnort = K2.Wohnort und K1.KundenNr = K2.KundenNr);

Also: Zeige alle Kunden K1 bei denen der Rabbat größer als der Durchschnitt der Kunden K2 mit gleichem Wohnort und gleicher KundenNr. ist.
 
  • Frage an alle Datenbank- / SQL-Experten Beitrag #4
P

Passatcruiser

Beiträge
25
Reaktionspunkte
0
Ort
40593 Düsseldorf; 38448 Wolfsburg
@ Tom:

Genau das ist mein Problem. Dann wäre also die o.a. Lösung (des Professors!) zu der SQL-Anweisung falsch. Oder damit die Lösung stimmt müßte die Anweisung wie folgt heißen:

SELECT * FROM Kunden K1
WHERE rabatt > (SELECT AVG (rabatt) FROM Kunden K2
WHERE K1.Wohnort = K2.Wohnort AND K1.KundenNr <> K2.KundenNr);

ODER?????
 
  • Frage an alle Datenbank- / SQL-Experten Beitrag #5
Tom

Tom

Beiträge
4.952
Reaktionspunkte
1
Ort
Dresden
Passatcruiser schrieb:
SELECT * FROM Kunden K1
WHERE rabatt > (SELECT AVG (rabatt) FROM Kunden K2
WHERE K1.Wohnort = K2.Wohnort AND K1.KundenNr <> K2.KundenNr);
Das würde ja bedeuten, dass die KundenNr. nicht gleich sein soll. Ist dem so?
 
  • Frage an alle Datenbank- / SQL-Experten Beitrag #7
Tom

Tom

Beiträge
4.952
Reaktionspunkte
1
Ort
Dresden
@Scatha
So gesehen schon, aber wir kennen ja den Inhalt der Tabellen nicht. Es macht ja auch nicht unbedingt Sinn, 2 Kundentabellen anzulegen.
 
  • Frage an alle Datenbank- / SQL-Experten Beitrag #8
P

Passatcruiser

Beiträge
25
Reaktionspunkte
0
Ort
40593 Düsseldorf; 38448 Wolfsburg
Es gibt dazu keine Tabellen. In der Aufgabe steht nur die o.g. SQL-Anweisung


Tom schrieb:
Passatcruiser schrieb:
SELECT * FROM Kunden K1
WHERE rabatt > (SELECT AVG (rabatt) FROM Kunden K2
WHERE K1.Wohnort = K2.Wohnort AND K1.KundenNr <> K2.KundenNr);
Das würde ja bedeuten, dass die KundenNr. nicht gleich sein soll. Ist dem so?

Das weiß ich eben nicht. Es geht darum, die SQL-Anweisung so zu schreiben, dass die Lösung "Gebe alle Kunden aus, deren Rabatt höher als der Durchschittsrabatt der anderen Kunden desselben Wohnortes ist" richtig ist
 
Thema:

Frage an alle Datenbank- / SQL-Experten

Oben