Brauche Hilfe mit SQL, zu den Aggregatfunktionen?

... komplette Frage anzeigen

2 Antworten

Ich hoffe, du studierst nicht "Informatik". ;)

Die einfachste Version ist ein Sub-Select, das den maximalen Buch-Preis zurückgibt:

SELECT titel, preis
FROM buch
WHERE preis = (
                  -- Dieses Sub-Select
                  -- findet den maximalen Preis.
                  SELECT TOP (1) max(preis)                             FROM buch              
              )

Falls mehrere Bücher den gleichen Preis haben, werden mehrere zurückgegeben.

"TOP (1)" deshalb, weil - je nach Einstellungen des SQL-Servers - der gleiche Preis mehrfach auftauchen kann und dann die Abfrage scheitern wird. (Sie erwartet EINEN Wert aus dem Sub-Select.) Es ist also nur eine "Sicherheits-Funktion", die kann, aber nicht muss.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von wotan38
14.11.2015, 11:00

Der maximale Preis wird nur einmal ausgegeben, egal wie oft er vorkommt. Die Angabe von top ist deshalb nicht erforderlich, evtl. ist sie sogar fehlerhaft (ich hab sowas noch nicht ausprobiert). Beim Aufzählen der Titel werden aber alle Titel angezeigt, die diesen Preis haben.

Die Überlegung, dass ein min- oder max-Wert sich auf mehrere Treffer beziehen kann, ist richtig und bleibt oft unberücksichtigt.

Unbeschadet davon ist die Antwort gut, gebe einen Daumen hoch dafür.

0

Was möchtest Du wissen?