-- ------------------------------------------------------------------------
-- 1.1) SQL Klauseln
-- ------------------------------------------------------------------------
-- region
 
-- Geben Sie für Kreuzfahrten folgende Werte an:
-- LABEL, NAME, DISTANCE.
 
-- @LABEL -> CRUISES.LABEL
-- @NAME  -> SHIP.NAME
-- @ROUTE_NAME -> ROUTES_JT.NAME
-- @DISTANCE   -> ROUTES_JT.DISTANCE
 
-- Tables: CRUISES, CRUISE_HAS_ROUTES_JT, ROUTES_JT
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 1.2) SQL Klauseln
-- ------------------------------------------------------------------------
-- region
 
-- Geben Sie für Kreuzfahrten folgende Werte an:
-- LABEL, DISTANCE, DISTANCE_CLASSIFICATION
 
-- @LABEL -> CRUISES.LABEL
-- @DISTANCE -> Die während der Kreuzfahrt zurückgelegte Länge der Summe
--              der Strecken
 
-- @DISTANCE_CLASSFICATION -> Entsprechend der zurückgelegten Strecke soll
--                            eine Klassifizierung angegeben werden:
 
--     0    < DISTANCE <= 1000     "SHORT_CRUISE"
--     1000 < DISTANCE <= 2000     "MEDIUM_CRUISE"
--     2000 < DISTANCE <= ....     "LONG_CRUISE"
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 1.3) Subselect
-- ------------------------------------------------------------------------
-- region
 
-- Ermitteln Sie die Angestelltengruppe in der zur Zeit die meisten
-- Angestellten beschaeftigt sind.
 
-- Ausgabe: EMPLOYEE_TYPE, EMPLOYEE_COUNT
 
-- Tabellen: EMPLOYEE_ST
 
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 1.4) Subselect
-- ------------------------------------------------------------------------
-- region
 
-- Fuer welches Land werden die meisten Haefen gespeichert. Geben Sie die
-- folgenden Spalten aus:
 
-- Ausgabe: COUNTRY, HARBOR_COUNT
 
-- Tabellen: HARBORS
 
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 1.5) Subselect
-- ------------------------------------------------------------------------
-- region
 
-- Geben Sie die umsatzhoechste Buchung aus. Beruecksichtigen Sie nur
-- Buchungen die zwischen 2007 und 2020 abgeschlossen wurden.
 
-- Ausgabe: BOOKING_ID, TURNOVER
 
-- @TURNOVER: Beschreibt den gesamten Umsatz fuer eine Buchung.
 
-- Hinweis: Jeder CRUISE_HAS_BOOKINGS_JT Datensatz beschreibt welcher
--          Reisende, welche Kabine fuer welche Kreuzfahrt zu welchem
--          Preis erstanden im Rahmen welcher Buchung erstanden hat.
 
--          Eine Buchung kann aus mehreren CRUISE_HAS_BOOKING_JT
--          Datensaetzen bestehen!
 
-- Tabellen: CRUISE_HAS_BOOKINGS_JT, BOOKINGS
 
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 1.6) Subselect
-- ------------------------------------------------------------------------
-- region
 
-- In welcher Rolle arbeiten die meisten Mitarbeiter auf der Kreuzfahrt mit
-- den meisten Mitarbeitern?
 
-- Geben Sie folgenden Spaltenwerte aus: CRUISE_id, EMPLOYEE_ROLE, EMPLOYEE_COUNT
 
-- @EMPLOYEE_COUNT: Anzahl der Angestellten die in der entsprechenden Rolle
--                  beschaeftigt sind.
 
-- Tabellen: CRUISE_HAS_EMPLOYEES
 
 
 
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.1) Subselect: WITH Klausel
-- ------------------------------------------------------------------------
-- region
 
--  Zur Erstellung der jaehrlichen Bilanz soll fuer die gespeicherten Kreuz-
--  fahrten ein Report erstellt werden
 
-- Ermitteln Sie fuer jede Kreuzfahrt die folgenden Werte:
 
-- Ausgabe: CRUISE_ID, LABEL, DATE_OF_DEPARTUER, DURATION, EMPLOYEE_COUNT,
--          BOOKING_COUNT, SALES, BOOKED_CABINS
 
-- @DURATION: Anzahl der Tage
-- @EMPLOYEE_COUNT: Anzahl der Angestellten
-- @BOOKING_COUNT: Anzahl der Buchungen
-- @SALES: Durch Buchungen generierter Umsatz
-- @BOOKED_CABINS: Die Anzahl der gebuchten Kabinen
-- @DISTANCE:
 
-- Sortieren Sie das Ergebnis nach der Bezeichnung der Kreuzfahrten
 
-- Tabellen: CRUISES, CRUISE_HAS_EMPLOYEES_JT, CRUISE_HAS_BOOKINGS_JT
 
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.2) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Geben Sie alle Schiffstypen an, die zumindestens einem Kreuzfahrschiff
-- zugeordnet sind.
 
-- Hinweis: Als Kreuzfahrtschiffe werden Schiffe bezeichnet die bei
--          Kreuzfahrten eingesetzt werden
 
-- Ausgabe: TYPE
 
 
-- Tables: E_SHIP_CLASSIFICATION, SHIPS, CRUISES
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.3) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Finden Sie alle Häfen die zumindestens auf einer Route liegen.
 
-- Ausgabe: HARBOR_ID, NAME, COUNTRY
 
 
-- Tables: HARBORS, ROUTES_JT
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.4) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Finden Sie alle Häfen die auf keiner Route liegen.
 
-- Ausgabe: HARBOR_ID, NAME, COUNTRY
-- Hinweis: Es gibt keine Route für die der DEPARTURE_HARBOR oder ARRIVAL_HARBOR
--          mit dem Hafen übereinstimmen
 
 
-- Tables: HARBORS, ROUTES_JT
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.5) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Finden Sie alle Cruises, die zumindestens einmal gebucht worden sind.
 
-- Ausgabe: CRUISE_ID, LABEL
 
-- Tables: CRUISES, CRUISE_HAS_BOOKINGS_JT
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.6) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Finden Sie alle Cruises, für die keine Buchungen vorliegen.
 
-- Ausgabe: CRUISE_ID, LABEL
 
-- Tables: CRUISES, CRUISE_HAS_BOOKINGS_JT
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.7) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Geben Sie alle Schiffe aus, die keiner Cruise zugeordnet sind.
 
-- Ausgabe: SHIP_ID, NAME
--
-- @SHIP_ID -> SHIPS.SHIP_ID
-- @NAME    -> SHIPS.NAME
 
-- Tabellen: SHIPS, CRUISES
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.8) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Finden Sie alle Kreuzfahrten die unterschiedliche Kontinente anfahren
 
-- Ausgabe: CRUISE_ID, LABEL
 
-- Tabellen: CRUISES, CRUISES_HAS_ROUTES_JT, ROUTES, HARBORS
 
 
-- Hinweis: Es existiert mindestens eine Teilstrecke der Kreuzfahrt deren
--          Abfahrts- und AnkunftsHafen auf unterschiedlichen Continenten liegt
 
 
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.8) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Bestimmen Sie die Route mit dem höchsten Wert für die Streckenlänge
-- (DISTANCE).
 
-- Ausgabe: NAME, DISTANCE
 
-- Tabellen: ROUTES_JT
 
 
-- Hinweis: Es gibt keine Route mit einem höheren Wert der Streckenlänge (DISTANCE)
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.9) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Finden Sie alle Kreuzfahrten, die auf jeder zugeordneten Teilstrecke mehr
-- als 500 km zurücklegt.
 
-- Ausgabe: CRUISE_ID, LABEL
 
-- Tabellen: CRUISES, ROUTES_JT, CRUISE_HAS_ROUTES_JT
 
 
-- Hinweis: Keine, der der Kreuzfahrt zugeordnete Teilstrecke ist kürzer als 500 km.
 
 
 
-- endregion
 
-- ------------------------------------------------------------------------
-- 2.10) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Gesucht sind Länder deren Häfen nicht alle auf Reiserouten liegen.
 
-- Ausgabe: NAME
 
-- Tabellen: E_COUNTRIES, HARBORS, ROUTES_JT
 
 
 
 
 
-- endregion
 
 
-- ------------------------------------------------------------------------
-- 2.11) EXISTS Klausel
-- ------------------------------------------------------------------------
-- region
 
-- Welches Schiff wird bei den meisten Kreuzfahrten eingesetzt?
 
-- Ausgabe: SHIP_ID, NAME
 
-- Tabellen: CRUISE, SHIP
 
-- region query1: GROUP BY
 
 
-- Hinweis: Es gibt kein Schiff das auf mehr Kreuzfahrten eingesetzt
--          worden ist
 
 
 
-- endregion