From 8b422edab8f178f808edaf86b82b55f067d2178b Mon Sep 17 00:00:00 2001 From: TeresaSilva7361 Date: Sun, 17 Aug 2025 19:15:27 +0100 Subject: [PATCH] lab done --- SQL_Data_Aggregation_Transformation.sql | 77 +++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 SQL_Data_Aggregation_Transformation.sql diff --git a/SQL_Data_Aggregation_Transformation.sql b/SQL_Data_Aggregation_Transformation.sql new file mode 100644 index 0000000..0bfe75d --- /dev/null +++ b/SQL_Data_Aggregation_Transformation.sql @@ -0,0 +1,77 @@ +USE SAKILA; +SELECT + MAX(length) AS max_duration, + MIN(length) AS min_duration +FROM film; + +SELECT + FLOOR(AVG(length) / 60) AS avg_hours, + ROUND(AVG(length) % 60) AS avg_minutes +FROM film; + +SELECT + DATEDIFF(MAX(rental_date), MIN(rental_date)) AS days_operating +FROM rental; + +SELECT + rental_id, + rental_date, + MONTHNAME(rental_date) AS rental_month, + DAYNAME(rental_date) AS rental_weekday +FROM rental +LIMIT 20; + +SELECT + rental_id, + rental_date, + DAYNAME(rental_date) AS rental_weekday, + CASE + WHEN DAYOFWEEK(rental_date) IN (1, 7) THEN 'weekend' + ELSE 'workday' + END AS day_type +FROM rental +LIMIT 20; + +SELECT + title, + IFNULL(rental_duration, 'Not Available') AS rental_duration +FROM film +ORDER BY title ASC; + +SELECT + CONCAT(first_name, ' ', last_name) AS full_name, + LEFT(email, 3) AS email_prefix +FROM customer +ORDER BY last_name ASC; + +SELECT COUNT(*) AS total_films +FROM film; + +SELECT rating, COUNT(*) AS film_count +FROM film +GROUP BY rating; + +SELECT rating, COUNT(*) AS film_count +FROM film +GROUP BY rating +ORDER BY film_count DESC; + +SELECT + rating, + ROUND(AVG(length), 2) AS avg_length +FROM film +GROUP BY rating +ORDER BY avg_length DESC; + +SELECT + rating, + ROUND(AVG(length), 2) AS avg_length +FROM film +GROUP BY rating +HAVING AVG(length) > 120 +ORDER BY avg_length DESC; + +SELECT last_name +FROM actor +GROUP BY last_name +HAVING COUNT(*) = 1; \ No newline at end of file