Skip to Content
HDatenbankenCheckpoint-Quiz

In diesem Quiz arbeiten Sie mit Daten von Netflix (Quelle), die zeigen, was beim Streaminganbieter wie oft geschaut wird.

Datenbankschema und Primärschlüssel

Typischerweise stellt man Datenbanken in einem sogenannten Schema dar: Das ist eine Übersicht der Tabellen, ihren Spalten, deren Datentypen, sowie den Beziehungen zwischen den Tabellen - aber ohne Daten! In unserem Beispiel sieht das Schema so aus:

An Excalidraw image (light theme)

Einige Beobachtungen, damit Sie sehen, was hier alles dargestellt ist:

  • Boxen: Es gibt eine Tabelle movie mit den Spalten title, runtime, release_date, etc.
  • Datentypen rechts: Die Spalte available_globally hat den Datentyp boolean und ist demzufolge ein Wahr/Falsch-Wert. (Sie müssen die SQL-Datentypen nicht lernen.)
  • Pfeile: Die Tabelle view_summary hat eine Relation mit der Tabelle movie. Das bedeutet: Die Daten in der Spalte movie_id in view_summary entsprechen den Daten in der Spalte id der Tabelle movie. Das Datenbanksystem kann solche Beziehungen überwachen und je nach Konfiguration sicherstellen, dass es keine Einträge mit einer movie_id geben kann, die es in der Tabelle movie gar nicht gibt.
  • Schlüssel: Die Tabelle movie hat eine Spalte id als Primärschlüssel. Das bedeutet, dass jeder Datensatz der Tabelle anhand von id eindeutig identifiziert werden kann. Das Datenbanksystem garantiert uns, dass es keine zwei Filme mit dem gleichen Wert in der Spalte id zulassen wird.

Schauen wir uns nun an, wie die Daten in der Tabelle view_summary vorliegen. Eine Frage, die sich stellt: Offenbar werden die Zuschauerzahlen für spezifische Zeitperioden rapportiert. Sind das Stunden, Tage, Wochen, Monate? Ein Beispiel-Query, wie Sie das herausfinden können.

Was gibt es für Zeitperioden? (Sie können das Query wie vorgegeben einfach ausführen.)

select-distinct

Loading...
Datenbank wird geladen...

Wunderbar. Jetzt wissen wir, dass es bei duration nur zwei mögliche Werte gibt. Machen wir uns das Leben also einfach: Wir schauen in diesem Quiz ausschliesslich Halbjahresperioden an, also WHERE duration = 'SEMI_ANNUALLY' .

1. Meistgeschaute Inhalte

Selektieren Sie aus der Tabelle view_summary die Spalten id und hours_viewed der zehn Datensätze, die in einer Halbjahresperiode am meisten geschaut wurden.

idhours_viewed
id aus der Tabelle view_summaryhours_viewed aus der Tabelle view_summary

most-watched

Loading...
Datenbank wird geladen...

2. Meistgeschaute Filme

Finden Sie nun die Filmtitel und hours_viewed der zehn meistgeschauten Filme in einem Halbjahr heraus. Wir selektieren also nur Filme, Serien werden ignoriert.

titlehours_viewed
title aus der Tabelle moviehours_viewed aus der Tabelle view_summary

most-watched-movietitle

Loading...
Datenbank wird geladen...

3. Serien dominieren

Hmm… Jetzt haben sich die Zahlen stark verändert. Können Sie sich das erklären? Schauen wir uns doch mal die 50 meistgeschauten Inhalte generell in einem Halbjahr an. Selektieren Sie erneut die Filmtitel (title) und hours_viewed, aber zeigen Sie zusätzlich auch die hours_viewed von Serien an - die also keinen title in der Tabelle movie haben.

titlehours_viewed
title aus der Tabelle movie (kann NULL sein)hours_viewed aus der Tabelle view_summary

most-watched-content

Loading...
Datenbank wird geladen...

4. Meistgeschaute Staffeln und Filme

Sie sehen: Serien dominieren die Ranglisten total! Versuchen wir nun zusätzlich herauszufinden, welche Serienstaffeln oft geschaut wurden.

Erweitern Sie die 50 meistgeschauten Inhalte in einem Halbjahr mit den Titeln der Filme und der Serienstaffeln. Achtung: Den title-Spalten müssen Sie andere Namen gegeben.

season_titlemovie_titlehours_viewed
title aus der Tabelle seasontitle aus der Tabelle moviehours_viewed aus der Tabelle view_summary

50-most-watched-seasons-and-movies

Loading...
Datenbank wird geladen...

5. Wer war am längsten in den Top 10?

Nun kommt die einzige Frage, bei der wir nicht nur Halbjahresdaten einbeziehen - löschen Sie also für diese Aufgabe WHERE duration = 'SEMI_ANNUALLY'. Ändern Sie den Rest Ihres Queries so ab, dass Sie die drei Inhalte finden, die am längsten in den Top10 waren.

season_titlemovie_titlecumulative_weeks_in_top10
title aus der Tabelle seasontitle aus der Tabelle moviecumulative_weeks_in_top10 aus der Tabelle view_summary

longest-top-10

Loading...
Datenbank wird geladen...

6. Meistgeschaute Serien überhaupt

Nun nutzen wir eine Aggregatsfunktion, um herauszufinden, welche 10 Serien über alle Staffeln und Halbjahresperioden hinweg am meisten geschaut wurde.

Dazu brauchen Sie erstmals einen JOIN über zwei Tabellen - nämlich über season zu tv_show. Keine Sorge, das ist relativ einfach: Machen Sie einfach einen JOIN für jede Beziehung - also insgesamt zwei JOINs. Ich habe Ihnen das Grundgerüst des Querys vorgeschrieben.

show_titlehours
title aus der Tabelle tv_showSumme der hours_viewed aller Staffeln einer Serie

most-watched-alltime

Loading...
Datenbank wird geladen...

7. Meistgeschaute Serie in einem Halbjahr

Bei der vorhergehenden Frage haben wir alle Halbjahresperioden einer Serie aufaddiert. So haben ältere Serien wie Suits oder Grey’s Anatomy natürlich einen grossen Vorteil!

Korrigieren wir das. Ändern Sie Ihr Query so ab, dass weiterhin jeweils die Zahlen aller Staffeln einer Serie aufaddiert werden - aber nur, wenn sie zur selben Halbjahresperiode gehören. Dazu müssen Sie wissen: Mit GROUP BY spalte1, spalte2 können Sie nach mehreren Spalten gruppieren und Daten derselben Periode haben dasselbe start_date.

show_titlehours
title aus der Tabelle tv_showSumme der hours_viewed aller Staffeln einer Serie

most-watched-semiannually

Loading...
Datenbank wird geladen...

8. Welche Serie hat die meisten Staffeln erfasst?

Zum Schluss versuchen Sie die fünf Serien zu finden, die (in dieser Datenbank) am meisten Staffeln haben.

show_titlenr
title aus der Tabelle tv_showAnzahl erfasste Staffeln

series-with-most-seasons

Loading...
Datenbank wird geladen...
Last updated on