Witam Państwa :)
Pracuję aktualnie nad zapytaniami do bazy danych dostępnych pod adresem: https://www.postgresqltutorial.com/postgresql-sample-database/
udało mi się wykonać 8 zapytań z 15 więc nie jest źle ^^ lecz dalej ciągle borykam się z problemami.
Poniżej treść pytań i odpowiedzi które już mam:
Zapytania:
- Znajdź aktora, który grał w największej liczbie filmów.
select a.first_name, a.last_name, fa.actor_id, count(*) as ilosc_filmow from film_actor fa join actor a on fa.actor_id=a.actor_id join film f on f.film_id=fa.film_id group by fa.actor_id, a.first_name, a.last_name order by ilosc_filmow desc limit 1;
- Znajdź aktora, który grał w największej liczbie filmów dłóższych niż godzina.
select a.first_name, a.last_name, fa.actor_id, count(*) as ilosc_filmow from film_actor fa join actor a on fa.actor_id=a.actor_id join film f on f.film_id=fa.film_id group by fa.actor_id, a.first_name, a.last_name, f.length having f.length>60 order by ilosc_filmow desc limit 1;
- Znajdź liczbę filmów w języku japońskim.
select count(*) from film f join language l on f.language_id=l.language_id where l.name='Japanese' limit 5;
- Znajdź wszystkich aktorów, którzy grali w co najmniej trzech filmach z językiem hiszpańskim.
select a.first_name, a.last_name, fa.actor_id, count() as ilosc_filmow from film_actor fa join actor a on fa.actor_id=a.actor_id join film f on f.film_id=fa.film_id join language l on l.language_id=f.language_id where l.name='English' group by fa.actor_id, a.first_name, a.last_name having count()>2;
- Znajdź liczbę komedii w języku francuskim.
select count(*) from category as c join film_category as fc on c.category_id=fc.category_id join film as f on f.film_id=fc.film_id join language as l on l.language_id=f.language_id where l.name='English' and c.name='Comedy';
- Znajdź wszystkich aktorów, którzy grali w więcej niż jednym gatunku filmmowym.
select a.first_name, a.last_name, c.name from category as c join film_category as fc on c.category_id=fc.category_id join film as f on f.film_id=fc.film_id join language as l on l.language_id=f.language_id join film_actor as fa on fa.film_id=f.film_id join actor as a on a.actor_id=fa.actor_id group by a.actor_id, c.name having count(c.name)>1;
- Znajdź klienta, który ma największą liczbę wypożyczeń w bazie.
select c.first_name, c.last_name, count() from rental r join customer c on c.customer_id = r.customer_id group by r.customer_id, c.first_name, c.last_name order by count() desc limit 1;
- Dla znalezionego w poprzednim punkcie klienta znajdź jego ulubioną kategorię filmową.
select c.first_name, c.last_name, ca.name as category, count() from rental r join customer c on c.customer_id = r.customer_id join inventory i on i.inventory_id=r.inventory_id join film f on f.film_id=i.film_id join film_category fc on fc.film_id=f.film_id join category ca on ca.category_id=fc.category_id where c.first_name='Eleanor' group by ca.name, r.customer_id, c.first_name, c.last_name order by count() desc;
- Wyświetl wszystkie kraje w których istnieją klienci, którzy mają na swoim koncie co najmniej 5 wypożyczeń.
- Wyświetl adres e-mail najaktywniejszego pracownika.
- Znajdź trzy wersje językowe filmów, które są najrzadziej wypożyczane. Wyświetl ich łączną liczbę wypożyczeń.
- Znajdź największą płatność spośród wszystkich klientów z Bydgoszczy.
- Czy klienci z Francji najbardziej preferują filmy w języku francuskim?
- Jakie jest najpopularniejsze imię wśród aktorów, klientów i obsługi? Czy jest to te same imię?
- Oblicz całkowitą kwotę wypożyczeń najaktywniejszego klienta z Polski.