Die erste Antwort zielt zwar in die richtige Richtung, ermittelt aber nur die Kunden, die mehr als 2 Buchungen getätigt haben. Die Anforderung "mit dem gleichen Schiff" wird jedoch nicht berücksichtigt. Dafür ist ein zweiter Join auf die Kreuzfahrttabelle und eine zusätzliche Gruppierung nach Schiff notwendig.
SELECT k.Nachname, k.Vorname FROM Kunde k INNER JOIN Buchung b ON b.Kunde = k.KundenID INNER JOIN Kreuzfahrt f ON f.KreuzfahrtID = b.Kreuzfahrt GROUP BY k.Nachname, k.Vorname, f.Schiff HAVING COUNT(f.KreuzfahrtID) > 2 ORDER BY k.Nachname
Select k.Nachname,k.Vorname FROM Kunde as k JOIN Buchung as b ON k.KundenID = b.Kunde GROUP BY k.Nachname,k.Vorname HAVING COUNT(b.Kunde) > 2 ORDER BY k.Nachname asc