From b53007aa80cbba1eae87d7a35aa5d695154d33c7 Mon Sep 17 00:00:00 2001 From: Kevin Gonzalez Date: Wed, 29 Apr 2026 12:52:55 +0200 Subject: [PATCH] solved lab --- lab_subqueries.sql | 131 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 lab_subqueries.sql diff --git a/lab_subqueries.sql b/lab_subqueries.sql new file mode 100644 index 0000000..6fd0210 --- /dev/null +++ b/lab_subqueries.sql @@ -0,0 +1,131 @@ +-- 1. Number of copies of "Hunchback Impossible" in inventory +SELECT + COUNT(*) AS number_of_copies +FROM inventory +WHERE film_id = ( + SELECT film_id + FROM film + WHERE title = 'HUNCHBACK IMPOSSIBLE' +); + +-- 2. Films longer than the average length +SELECT + title, + length +FROM film +WHERE length > ( + SELECT AVG(length) + FROM film +); + +-- 3. Actors who appear in "Alone Trip" +SELECT + first_name, + last_name +FROM actor +WHERE actor_id IN ( + SELECT actor_id + FROM film_actor + WHERE film_id = ( + SELECT film_id + FROM film + WHERE title = 'ALONE TRIP' + ) +); + +-- 4. Movies categorized as Family films +SELECT + title +FROM film +WHERE film_id IN ( + SELECT film_id + FROM film_category + WHERE category_id = ( + SELECT category_id + FROM category + WHERE name = 'Family' + ) +); + +-- 5. Customers from Canada using subqueries +SELECT + first_name, + last_name, + email +FROM customer +WHERE address_id IN ( + SELECT address_id + FROM address + WHERE city_id IN ( + SELECT city_id + FROM city + WHERE country_id = ( + SELECT country_id + FROM country + WHERE country = 'Canada' + ) + ) +); + +-- 5. Customers from Canada using joins +SELECT + c.first_name, + c.last_name, + c.email +FROM customer c +JOIN address a + ON c.address_id = a.address_id +JOIN city ci + ON a.city_id = ci.city_id +JOIN country co + ON ci.country_id = co.country_id +WHERE co.country = 'Canada'; + +-- 6. Films starred by the most prolific actor +SELECT + title +FROM film +WHERE film_id IN ( + SELECT film_id + FROM film_actor + WHERE actor_id = ( + SELECT actor_id + FROM film_actor + GROUP BY actor_id + ORDER BY COUNT(film_id) DESC + LIMIT 1 + ) +); + +-- 7. Films rented by the most profitable customer +SELECT DISTINCT + f.title +FROM film f +JOIN inventory i + ON f.film_id = i.film_id +JOIN rental r + ON i.inventory_id = r.inventory_id +WHERE r.customer_id = ( + SELECT customer_id + FROM payment + GROUP BY customer_id + ORDER BY SUM(amount) DESC + LIMIT 1 +); + +-- 8. Clients who spent more than the average total amount spent by each client +SELECT + customer_id, + SUM(amount) AS total_amount_spent +FROM payment +GROUP BY customer_id +HAVING SUM(amount) > ( + SELECT AVG(total_spent) + FROM ( + SELECT + customer_id, + SUM(amount) AS total_spent + FROM payment + GROUP BY customer_id + ) AS customer_totals +); \ No newline at end of file