From 2071650d0d4c6be8fe709334d24f5663128e0390 Mon Sep 17 00:00:00 2001 From: letter-b Date: Wed, 18 Mar 2026 21:10:37 +0000 Subject: [PATCH] Lab done --- joins_lab.sql | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 joins_lab.sql diff --git a/joins_lab.sql b/joins_lab.sql new file mode 100644 index 0000000..73482d1 --- /dev/null +++ b/joins_lab.sql @@ -0,0 +1,81 @@ +USE sakila; + +#1 +SELECT + c.name AS category, + COUNT(fc.film_id) AS number_of_films +FROM category c +JOIN film_category fc ON c.category_id = fc.category_id +GROUP BY c.name; + +#2 +SELECT + s.store_id, + ci.city, + co.country +FROM store s +JOIN address a ON s.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; + +#3 +SELECT + s.store_id, + SUM(p.amount) AS total_revenue +FROM store s +JOIN staff st ON s.store_id = st.store_id +JOIN payment p ON st.staff_id = p.staff_id +GROUP BY s.store_id; + +#4 +SELECT + c.name AS category, + ROUND(AVG(f.length), 2) AS avg_running_time +FROM category c +JOIN film_category fc ON c.category_id = fc.category_id +JOIN film f ON fc.film_id = f.film_id +GROUP BY c.name; + +#5 +SELECT + c.name AS category, + ROUND(AVG(f.length), 2) AS avg_running_time +FROM category c +JOIN film_category fc ON c.category_id = fc.category_id +JOIN film f ON fc.film_id = f.film_id +GROUP BY c.name +ORDER BY avg_running_time DESC +LIMIT 1; + +#6 +SELECT + f.title, + COUNT(r.rental_id) AS rental_count +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 f.title +ORDER BY rental_count DESC +LIMIT 10; + +#7 +SELECT + f.title, + s.store_id, + COUNT(i.inventory_id) AS available_copies +FROM film f +JOIN inventory i ON f.film_id = i.film_id +JOIN store s ON i.store_id = s.store_id +WHERE f.title = 'Academy Dinosaur' AND s.store_id = 1 +GROUP BY f.title, s.store_id; + +#8 +SELECT + f.title, + CASE + WHEN IFNULL(MAX(i.inventory_id), 0) = 0 THEN 'NOT available' + ELSE 'Available' + END AS availability_status +FROM film f +LEFT JOIN inventory i ON f.film_id = i.film_id +GROUP BY f.title; \ No newline at end of file