diff --git a/lab-sql-joins-solved.sql b/lab-sql-joins-solved.sql new file mode 100644 index 0000000..b215de5 --- /dev/null +++ b/lab-sql-joins-solved.sql @@ -0,0 +1,60 @@ +USE sakila; + +SELECT c.name AS category, COUNT(*) AS number_of_films +FROM film_category fc +INNER JOIN category c ON fc.category_id = c.category_id +GROUP BY c.name +ORDER BY number_of_films DESC; + +SELECT s.store_id, ci.city, co.country +FROM store s +INNER JOIN address a ON s.address_id = a.address_id +INNER JOIN city ci ON a.city_id = ci.city_id +INNER JOIN country co ON ci.country_id = co.country_id; + +SELECT s.store_id, SUM(p.amount) AS total_revenue +FROM store s +INNER JOIN staff st ON s.store_id = st.store_id +INNER JOIN payment p ON st.staff_id = p.staff_id +GROUP BY s.store_id; + +SELECT c.name AS category, ROUND(AVG(f.length), 2) AS avg_running_time +FROM film f +INNER JOIN film_category fc ON f.film_id = fc.film_id +INNER JOIN category c ON fc.category_id = c.category_id +GROUP BY c.name +ORDER BY avg_running_time DESC; + + +SELECT c.name AS category, ROUND(AVG(f.length), 2) AS avg_running_time +FROM film f +INNER JOIN film_category fc ON f.film_id = fc.film_id +INNER JOIN category c ON fc.category_id = c.category_id +GROUP BY c.name +ORDER BY avg_running_time DESC +LIMIT 1; + +SELECT f.title, COUNT(r.rental_id) AS rental_count +FROM film f +INNER JOIN inventory i ON f.film_id = i.film_id +INNER JOIN rental r ON i.inventory_id = r.inventory_id +GROUP BY f.title +ORDER BY rental_count DESC +LIMIT 10; + +SELECT f.title, i.store_id, COUNT(i.inventory_id) AS copies_available +FROM film f +INNER JOIN inventory i ON f.film_id = i.film_id +WHERE f.title = 'ACADEMY DINOSAUR' +AND i.store_id = 1 +GROUP BY f.title, i.store_id; + +SELECT f.title, + CASE + WHEN IFNULL(i.inventory_id, 0) = 0 THEN 'NOT available' + ELSE 'Available' + END AS availability +FROM film f +LEFT JOIN inventory i ON f.film_id = i.film_id +GROUP BY f.title, availability +ORDER BY f.title ASC; \ No newline at end of file