SQL Übungslösungen zu Aufgaben der SAKILA Datenbank...

zu den Übungsaufgaben und Datenbank

 

Aufgaben V1:

- In welcher Stadt und welchem Land wohnt Lisa (costumers)
-- es kann viele Lisas geben

SELECT cu.first_name, cu.last_name, country.* 
FROM customer cu
INNER JOIN address a
ON cu.address_id = a.address_id
INNER JOIN city
on a.city_id = city.city_id
INNER JOIN country
on city.country_id = country.country_id
WHERE cu.first_name like "Lisa";

- Welche Filme hat Store1?

SELECT film.* 
FROM inventory
INNER JOIN film
ON inventory.film_id = film.film_id
INNER JOIN store
ON store.store_id = inventory.store_id
WHERE store.store_id = 1;

- Wie viele Filme hat Store2?

SELECT COUNT(film.film_id)
FROM inventory
INNER JOIN film
ON inventory.film_id = film.film_id
INNER JOIN store
ON store.store_id = inventory.store_id
WHERE store.store_id = 2;

- In welchen Filmen spielt UMA WOOD?

SELECT film.*
FROM film
INNER JOIN film_actor
ON film.film_id = film_actor.film_id
INNER JOIN actor
ON film_actor.actor_id = actor.actor_id
WHERE actor.first_name like "UMA"
AND actor.last_name like "WOOD";

- Wie viele Filme sind in der DB?

SELECT COUNT(film.film_id)
FROM film;

- Wie ist die durchschnittliche length alle Filme?

SELECT AVG(length) FROM film;

- Was ist der teuerste Film (replacement cost)

SELECT * FROM `film` ORDER BY replacement_cost DESC LIMIT 0,1;

- Welcher Film wurde in Summe am längesten ausgeliehen?

SELECT film.film_id, film.title, SUM(datediff(return_date, rental_date))
FROM `rental`
INNER JOIN inventory
on rental.inventory_id = inventory.inventory_id
INNER JOIN film
on film.film_id = inventory.film_id
GROUP BY (film_id);

- Welcher Mitarbeiter hat die meisten Rentals bearbeit?

SELECT staff.staff_id, staff.first_name, staff.last_name, COUNT(rental.rental_id)
FROM `rental`
INNER JOIN staff
ON rental.staff_id = staff.staff_id
GROUP BY(staff.staff_id);

- Was sind die längsten Filme von SANDRA KILMER?

SELECT actor.first_name, actor.last_name, film.*
FROM film
INNER JOIN film_actor
ON film.film_id = film_actor.film_id
INNER JOIN actor
ON actor.actor_id = film_actor.actor_id
WHERE actor.first_name like "SANDRA"
AND actor.last_name like "KILMER"
ORDER BY (film.length) DESC;

- Wie viele SANDRAs sind der DB?

(SELECT first_name, last_name FROM `actor` WHERE first_name = "SANDRA")
UNION
(SELECT first_name, last_name FROM `staff` WHERE first_name = "SANDRA")

 

Aufgaben V2:
- Wie viele Lander sind in der Datenbank verzeichnet?

SELECT count(country_id) FROM `country`;

- Welche Sprachen sind in der Datenbank verzeichnet?

SELECT * FROM `language`;

- In wie vielen Filem spielt UMA WOOD?

SELECT count(film.film_id)
FROM film
INNER JOIN film_actor
ON film.film_id = film_actor.film_id
INNER JOIN actor
ON film_actor.actor_id = actor.actor_id
WHERE actor.first_name like "UMA"
AND actor.last_name like "WOOD";

- Wie groß ist die Summe der Zeit, aller Rentals (Leihungen)?

SELECT SUM(datediff(return_date, rental_date))
FROM `rental`;

- Wie viele Filme je Sprache sind in der Datenbank verzeichnet?

SELECT language.language_id, language.name, COUNT(film.language_id) FROM film INNER JOIN language ON film.language_id = language.language_id
GROUP BY (language.language_id);

- Legen Sie den Film "Zucker Punch" in deutscher Sprache an. (Schauspieler müssen nicht verbunden werden)

INSERT INTO film (film_id, title, description, release_year, language_id, original_language_id, rental_duration, rental_rate, length, replacement_cost, rating, special_features, last_update) VALUES (NULL, 'Zucker Punch', 'Zucker Punch', '2015', '6', '1', '3', '4.99', NULL, '19.99', 'G', NULL, current_timestamp());

- Legen Sie den Film "Tre metri sopra il cielo" an. Tipp: Es geht um das italienische Original. (Schauspieler müssen nicht verbunden werden)

 INSERT INTO film (film_id, title, description, release_year, language_id, original_language_id, rental_duration, rental_rate, length, replacement_cost, rating, special_features, last_update) VALUES (NULL, 'Tre metri sopra il cielo', 'Tre metri sopra il cielo', '2004', '2', '2', '3', '4.99', NULL, '19.99', 'G', NULL, current_timestamp());

- Wie viele Filme je Sprache sind in der Datenbank verzeichnet?

SELECT language.language_id, language.name, COUNT(film.language_id) FROM film INNER JOIN language ON film.language_id = language.language_id
GROUP BY (language.language_id);

- In welche Städten wohnen die Mitarbeiter?

SELECT staff.staff_id, staff.first_name, staff.last_name, city.city FROM address INNER JOIN city ON address.city_id = city.city_id INNER JOIN staff ON staff.address_id = address.address_id;

- Erstellen ein Ranking aller Categorien mit der Anzahl der Filme?

SELECT category.*, COUNT(film.film_id) AS anz
FROM category
INNER JOIN film_category
ON category.category_id = film_category.category_id
INNER JOIN film
ON film.film_id = film_category.film_id
GROUP BY (category.category_id)
ORDER BY (anz) DESC

- Welche Categorie hat die meisten Filme?

SELECT category.*, COUNT(film.film_id) AS anz
FROM category
INNER JOIN film_category
ON category.category_id = film_category.category_id
INNER JOIN film
ON film.film_id = film_category.film_id
GROUP BY (category.category_id)
ORDER BY (anz) DESC
LIMIT 0,1

 

Zurück zu den Aufgaben: 

 

Verwandte Artikel:

MkDev-Games beschäftigt sich mit Spielentwicklung und Softwareentwicklung.
Im besonderen geht es um die Unity3D-Engine, eigene Entwicklungen und gegebene Tutorials bzw. Workshops.
Durch Anfragen durch die Community, ergeben sich aber auch Univeritätsbezogene Tutorials und Artikel mit anderem Kontext...

Facebook: Mkdev-Games

Twittter: @MathiasKohs

GitHub: MathiasKoAc

 

Hinter MkDevGames steckt:

Name: Mathias Kohs

Synonym: Shockergnomm

 

Softwareentwickler in Aachen mit Fokus auf große System und Unity3D sowie Schnittstellen in fast alle Branchen.

 

Start des Blogs: August 2016