81 lines
3.4 KiB
SQL
81 lines
3.4 KiB
SQL
-- DBS2.1.3.a::
|
|
-- Berechnen Sie die Summe aller Budgets (SUMME) sowie das minimale (MIN) und
|
|
-- maximale Budget (MAX) für alle Kinofilme (Type=C) des Jahres 1989, bei denen das Budget
|
|
-- in USD angegeben ist. (eine Anfrage!). Hinweis: verwenden Sie ... like '%USD%' ...
|
|
-- Erwartete Spalten: summe, min, max
|
|
|
|
SELECT SUM(b.BUDGET), MIN(b.BUDGET), MAX(b.BUDGET)
|
|
FROM moviedb.MOVIE m
|
|
JOIN moviedb.BUDGET b ON (m.ID = b.MOVIE)
|
|
WHERE m.TYPE='C' AND m.YEAR=1989 AND b.CURRENCY_SYMBOL LIKE '%USD%'
|
|
GROUP BY YEAR;
|
|
|
|
-- DBS2.1.3.b::
|
|
-- Ermitteln Sie alle Genres, die in Kinofilmen aus dem Jahr 1960 eingesetzt wurden zusammen mit der Anzahl von
|
|
-- Kinofilmen (Type C), in denen sie in dem Jahr verwendet wurden. (Jedes Genre sollte nur einmal auftauchen!).
|
|
-- Erwartete Spalten: genre, anzahl
|
|
|
|
SELECT g.GENRE, COUNT(m.ID) AS ANZAHL
|
|
FROM moviedb.MOVIE m
|
|
JOIN moviedb.GENRE g ON (g.MOVIE = m.ID)
|
|
WHERE m.YEAR = 1960 AND m.TYPE = 'C'
|
|
GROUP BY g.GENRE;
|
|
|
|
-- DBS2.1.3.c::
|
|
-- Ermitteln Sie alle Genres, die in Kinofilmen aus dem Jahr 1960 eingesetzt wurden zusammen mit der Anzahl von
|
|
-- Kinofilmen (Type C), in denen sie in dem Jahr verwendet wurden. (Jedes Genre sollte nur einmal auftauchen!).
|
|
-- Schränken Sie die Abfrage so ein, dass nur Genres aufgelistet werden, zu denen es in 1960 mindestens
|
|
-- 100 Kinofilme gab.
|
|
-- Erwartete Spalten: genre, anzahl
|
|
|
|
SELECT g.GENRE, COUNT(m.ID) AS ANZAHL
|
|
FROM moviedb.MOVIE m
|
|
JOIN moviedb.GENRE g ON (g.MOVIE = m.ID)
|
|
WHERE m.YEAR = 1960 AND m.TYPE = 'C'
|
|
GROUP BY g.GENRE
|
|
HAVING COUNT(m.ID) >= 100;
|
|
|
|
-- DBS2.1.3.d::
|
|
-- Ermitteln Sie alle Genres, die in Kinofilmen aus dem Jahr 1960 eingesetzt wurden zusammen mit der Anzahl von
|
|
-- Kinofilmen (Type C), in denen sie in dem Jahr verwendet wurden. (Jedes Genre sollte nur einmal auftauchen!).
|
|
-- Schränken Sie die Abfrage so ein, dass nur Genres aufgelistet werden, zu denen es in 1960 mindestens
|
|
-- 100 Kinofilme gab.
|
|
-- Sortieren Sie das Ergebnis nach Häufigkeit absteigend.
|
|
-- Erwartete Spalten: genre, anzahl
|
|
|
|
SELECT g.GENRE, COUNT(m.ID) AS ANZAHL
|
|
FROM moviedb.MOVIE m
|
|
JOIN moviedb.GENRE g ON (g.MOVIE = m.ID)
|
|
WHERE m.YEAR = 1960 AND m.TYPE = 'C'
|
|
GROUP BY g.GENRE
|
|
HAVING COUNT(m.ID) >= 100
|
|
ORDER BY COUNT(m.ID) DESC;
|
|
|
|
-- DBS2.1.3.e::
|
|
-- Finden Sie ID und Titel aller Kinofilme (Type=C), die mind. einen Nachfolger haben, und die mindestens einmal
|
|
-- parodiert wurden. Ein Film hat einen Nachfolger, wenn die ID in der Tabelle FOLLOWS in der Spalte MOVIE
|
|
-- verwendet wird. Ein Film wurde parodiert, wenn die ID in der Tabelle SPOOFS in der Spalte SPOOFED verwendet
|
|
-- wird. Ein Film soll nur maximal einmal im Ergebnis sein, auch wenn er mehrere Nachfolger und Parodien hat.
|
|
-- Erwartete Spalten: id, title
|
|
|
|
SELECT DISTINCT m.ID, m.TITLE
|
|
FROM moviedb.MOVIE m
|
|
JOIN moviedb.FOLLOWS f ON (m.ID = f.MOVIE)
|
|
JOIN moviedb.SPOOFS s ON (m.ID = s.SPOOFED)
|
|
WHERE m.TYPE = 'C';
|
|
|
|
-- DBS2.1.3.f::
|
|
-- Finden Sie ID und Titel aller Kinofilme, die entweder mind. einen Nachfolger haben, oder mindestens einmal
|
|
-- parodiert wurden, für die aber nicht beides zutrifft.
|
|
-- Ein Film soll maximal einmal im Ergebnis sein.
|
|
-- Hinweis: Es gibt unterschiedliche Lösungsmöglichkeiten. Denken Sie über Full Outer Joins nach, oder alternativ
|
|
-- über Mengenoperationen.
|
|
-- Erwartete Spalten: id, title
|
|
|
|
SELECT DISTINCT m.ID, m.TITLE
|
|
FROM moviedb.MOVIE m
|
|
LEFT JOIN moviedb.FOLLOWS f ON (m.ID = f.MOVIE)
|
|
LEFT JOIN moviedb.SPOOFS s ON (m.ID = s.SPOOFED)
|
|
WHERE m.TYPE = 'C' AND (f.MOVIE IS NULL AND s.SPOOFED IS NOT NULL OR f.MOVIE IS NOT NULL AND s.SPOOFED IS NULL);
|
|
|