1. Film-Ranking
Erstellen Sie auf Basis der Ausleihzahlen ein Ranking der Filme. Geben Sie die Filme nach absteigenden Ausleihzahlen aus. Beschränken Sie die Ausgabe auf die ersten 10 Datensätze.
1 2 3 4 5 6 7 8 9 10 11 |
SELECT count(f.film_id) AS count , title FROM film f JOIN inventory i ON f.film_id = i.film_id JOIN rental r ON i.inventory_id = r.inventory_id GROUP BY title ORDER BY count DESC LIMIT 10; |
+-----+-------------------+ |count|title | +-----+-------------------+ |34 |Bucket Brotherhood | |33 |Rocketeer Mother | |32 |Juggler Hardly | |32 |Ridgemont Submarine| |32 |Grit Clockwork | |32 |Forward Temple | |32 |Scalawag Duck | |31 |Apache Divine | |31 |Goodfellas Salute | |31 |Rush Goodfellas | +-----+-------------------+
2. Wiederbeschaffungskosten
Es steht ein Gespräch mit Ihrer Versicherung an. Sie wollen die Deckungssumme für Ihr Filminventar anpassen. Wie hoch sind die aktuellen Wiederbeschaffungskosten Ihres Filminventars?
1 2 3 4 |
SELECT sum(replacement_cost) FROM inventory i JOIN film f ON f.film_id = i.film_id; |
+--------+ |sum | +--------+ |92621.19| +--------+
3. Kunden-Ausleihstatistik
Erstellen Sie eine einfache Statistik über die Anzahl der Ausleihvorgänge Ihrer Kunden. Gegen Sie die 10 Kunden mit den höchsten Ausleihanzahlen aus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
SELECT c.customer_id , c.first_name , c.last_name , count(rental_id) AS count FROM customer c JOIN rental r ON c.customer_id = r.customer_id GROUP BY c.customer_id , c.first_name , c.last_name ORDER BY count DESC LIMIT 10; |
+-----------+----------+---------+-----+ |customer_id|first_name|last_name|count| +-----------+----------+---------+-----+ |148 |Eleanor |Hunt |46 | |526 |Karl |Seal |45 | |144 |Clara |Shaw |42 | |236 |Marcia |Dean |42 | |75 |Tammy |Sanders |41 | |469 |Wesley |Bull |40 | |197 |Sue |Peters |40 | |468 |Tim |Cary |39 | |137 |Rhonda |Kennedy |39 | |178 |Marion |Snyder |39 | +-----------+----------+---------+-----+
4. Zeichenkettenaggregation
PostgreSQL hat eine Funktion namens string_agg()
. Die Funktion liefert eine mit dem angegebenen Trennzeichen verkettete Liste der Werte (siehe PostgreSQL-Dokumentaion).
Erstellen Sie eine Liste der Filmtitel mit den zugehörigen Schauspielern. Berücksichtigen Sie nur Filme, denen Schauspieler zugeordnet sind. Hier ein Muster dessen, was erwartet wird.
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ |title |actors | +----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ |Academy Dinosaur|Johnny Cage, Rock Dukakis, Christian Gable, Penelope Guiness, Mary Keitel, Oprah Kilmer, Warren Nolte, Sandra Peck, Mena Temple, Lucille Tracy| |Ace Goldfinger |Chris Depp, Bob Fawcett, Sean Guiness, Minnie Zellweger | |Adaptation Holes|Julianne Dench, Bob Fawcett, Ray Johansson, Cameron Streep, Nick Wahlberg | |Affair Prejudice|Scarlett Damon, Jodie Degeneres, Oprah Kilmer, Kenneth Pesci, Fay Winslet | |African Egg |Matthew Carrey, Matthew Leigh, Gary Phoenix, Dustin Tautou, Thora Temple | |Agent Truman |Kenneth Hoffman, Sandra Kilmer, Jayne Neeson, Warren Nolte, Kirsten Paltrow, Reese West, Morgan Williams | |Airplane Sierra |Michael Bolger, Mena Hopper, Oprah Kilmer, Jim Mostel, Richard Penn | |Airport Pollock |Susan Davis, Lucille Dee, Fay Kilmer, Gene Willis | ... (997 Datensätze insgesamt)
1 2 3 4 5 6 7 8 |
SELECT fi.title , string_agg(ac.first_name || ' ' || ac.last_name, ', ' ORDER BY ac.last_name, ac.first_name) AS actors_list FROM film fi JOIN film_actor fa ON fi.film_id = fa.film_id JOIN actor ac ON ac.actor_id = fa.actor_id GROUP BY fi.title; |