SQL MAX(COUNT)-Wert und weiteres Attribut ausgeben

KNM

Newbie
Registriert
Apr. 2023
Beiträge
2
Hallo zusammen,

ich bin gerade erst am Einstieg in SQL und schlage mich mit einem Übungsblatt von der Uni rum. Gegeben ist eine Datenbank, die Informationen über Künstler, Alben, CDS und deren Genres speichert. Ich soll nun das Genre finden, zu dem es die meisten Alben gibt. Die Ausgabe soll also nur aus einer Zeile bestehen (mit den Attributen "genre" und "NoOfAlbums").

MAX(X.NoOfAlbums) liefert mir als Ausgabe bereits die gewünschte Anzahl aller Alben des Genres mit den meisten Alben:

SQL:
SELECT MAX(X.NoOfAlbums)
FROM (SELECT COUNT(DISTINCT a2a.albumid) AS NoOfAlbums, g.genre AS genre
      FROM genres AS g
             JOIN cds ON g.genreid = cds.genreid
             JOIN artist2album AS a2a ON cds.artist2albumid = a2a.artist2albumid
             JOIN albums AS alb ON a2a.albumid = alb.albumid
      GROUP BY g.genre
      ) X

An der Ausgabe des Namen des Genres scheitere ich derzeit leider noch. Wenn ich g.genre in den SELECT-Clause mit aufnehme, vermisst der Compiler logischerweise der Eintrag im FROM-Clause. Ein zweiter FROM-Clause ist meines Wissens nicht möglich, oder? Es wäre klasse, wenn mir jemand dabei auf die Sprünge helfen könnte.

Danke im Voraus und viele Grüße aus München
 
Schau dir mal GROUP BY und COUNT an, das kannst du damit viel einfacher gestalten. Du brauchst dafür kein verschachteltes Select und auch kein MAX.

Noch als Tipp, bastel dir erst einmal das Join passend, anschließend fängst du an die Daten zu gruppieren und die Alben zu ermitteln. Hast du das, ist die letzte Aufgabe nur noch eine Zeile auszugeben (TOP).

PS: Aufgaben werden hier nicht so gern gesehen.
 
Zuletzt bearbeitet:
Hi @Testa2014, ich wusste nicht, dass Aufgaben hier nicht gern gesehen werden. Hatte mir schon gedacht, dass es auch ohne verschachteltes SELECT gehen muss aber bin gerade am Anfang noch wie ein Elefant im Porzellanladen und freue mich an allem, was funktioniert… ;-). Vielen Dank für deine Antwort.
 
Zurück
Oben