From 8d5d6e28e140a5a82e4d8fcf3d25e29ad6a4b1f4 Mon Sep 17 00:00:00 2001 From: prodduturisindhurdy Date: Fri, 31 Oct 2025 20:43:45 +0000 Subject: [PATCH 1/4] lab done --- aggregation.sql | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 aggregation.sql diff --git a/aggregation.sql b/aggregation.sql new file mode 100644 index 0000000..5328e71 --- /dev/null +++ b/aggregation.sql @@ -0,0 +1,48 @@ +use sakila; +#1.1 +select min(length) as min_duration,max(length) as max_duration from film; +#1.2 +select floor(avg(length)) from film; +#2.1 +SELECT + DATEDIFF(MAX(rental_date), MIN(rental_date)) AS operating_days +FROM rental; +#2.2 +select*,month(rental_date) as month,weekday(rental_date) as weekday from rental +limit 20; +#2.3 +select*,weekday(rental_date) as weekday , +case +when weekday(rental_date) in (1,2,3,4,5) then "workday" +else "weekend" +end as day_type +from rental; +#3 +select rental_duration from film; +select sum(isnull(rental_duration)) from film; +select title,coalesce(rental_duration,'not avaliable') as rental_duration from film +order by title asc; +select concat(first_name," ",last_name) as concated,left(email,3) as exrated from staff +order by last_name; + +#challenge 2 +#1.1 +select count(*) from film; +#1.2 +select rating,count(title) as number_of_films from film +group by rating; +#1.3 +select rating,count(title) as number_of_films from film +group by rating +order by number_of_films desc; +#2.1 +select rating,round(avg(length),2) as avg_duration from film +group by rating +order by avg_duration desc; +#2.2 +select rating,round(avg(length),2) as avg_duration from film +group by rating +having avg_duration>120; + +#bonus +select distinct last_name from actor; From 4e85f7321943dea46627662dd9fc0cc6e1c9a898 Mon Sep 17 00:00:00 2001 From: prodduturisindhurdy Date: Fri, 31 Oct 2025 20:57:24 +0000 Subject: [PATCH 2/4] solved lab --- aggregation.sql | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/aggregation.sql b/aggregation.sql index 5328e71..6ed9bba 100644 --- a/aggregation.sql +++ b/aggregation.sql @@ -1,28 +1,31 @@ use sakila; #1.1 -select min(length) as min_duration,max(length) as max_duration from film; +select min(length) as min_duration, +max(length) as max_duration +from film; #1.2 -select floor(avg(length)) from film; +select floor(avg(length)) + from film; #2.1 SELECT DATEDIFF(MAX(rental_date), MIN(rental_date)) AS operating_days FROM rental; #2.2 -select*,month(rental_date) as month,weekday(rental_date) as weekday from rental +select*,date_format(rental_date,'%M') as month,date_format(rental_date,'%W') as weekday from rental limit 20; #2.3 -select*,weekday(rental_date) as weekday , +select*,date_format(rental_date,'%W') as weekday , case -when weekday(rental_date) in (1,2,3,4,5) then "workday" +when date_format(rental_date,'%W') in ("Monday","Tuesday","Wednesday","Thrusday","Friday") then "workday" else "weekend" end as day_type from rental; #3 select rental_duration from film; select sum(isnull(rental_duration)) from film; -select title,coalesce(rental_duration,'not avaliable') as rental_duration from film +select title,ifnull(rental_duration,'Not Available') as rental_duration from film order by title asc; -select concat(first_name," ",last_name) as concated,left(email,3) as exrated from staff +select concat(first_name," ",last_name) as full_name,substr(email,1,3) as email_prefix from customer order by last_name; #challenge 2 @@ -45,4 +48,4 @@ group by rating having avg_duration>120; #bonus -select distinct last_name from actor; +SELECT last_name FROM actor GROUP BY last_name HAVING COUNT(*) = 1; From 8b20769812b1a50bfa7b168c0220781e58cf18e9 Mon Sep 17 00:00:00 2001 From: prodduturisindhurdy Date: Fri, 31 Oct 2025 21:00:38 +0000 Subject: [PATCH 3/4] solved lab --- aggregation.sql | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/aggregation.sql b/aggregation.sql index 6ed9bba..810cb7f 100644 --- a/aggregation.sql +++ b/aggregation.sql @@ -16,7 +16,7 @@ limit 20; #2.3 select*,date_format(rental_date,'%W') as weekday , case -when date_format(rental_date,'%W') in ("Monday","Tuesday","Wednesday","Thrusday","Friday") then "workday" +when date_format(rental_date,'%W') in ("Monday","Tuesday","Wednesday","Thursday","Friday") then "workday" else "weekend" end as day_type from rental; @@ -49,3 +49,10 @@ having avg_duration>120; #bonus SELECT last_name FROM actor GROUP BY last_name HAVING COUNT(*) = 1; + +select min(length) as min_duration, +max(length) as max_duration +from film; + +select floor(avg(length)) + from film; \ No newline at end of file From 46af77e1d21a7eb3fa8378f5581986e1569d65b6 Mon Sep 17 00:00:00 2001 From: prodduturisindhurdy Date: Sat, 1 Nov 2025 13:57:44 +0000 Subject: [PATCH 4/4] solved lab --- aggregation.sql | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/aggregation.sql b/aggregation.sql index 810cb7f..4ccb4a0 100644 --- a/aggregation.sql +++ b/aggregation.sql @@ -1,11 +1,17 @@ use sakila; #1.1 -select min(length) as min_duration, -max(length) as max_duration -from film; +SELECT + MIN(length) AS min_duration, + MAX(length) AS max_duration +FROM film; #1.2 -select floor(avg(length)) - from film; +SELECT + CONCAT( + FLOOR(AVG(length) / 60), ' hours ', + FLOOR(MOD(AVG(length), 60)), ' minutes' + ) AS avg_duration +FROM film; + #2.1 SELECT DATEDIFF(MAX(rental_date), MIN(rental_date)) AS operating_days @@ -50,9 +56,3 @@ having avg_duration>120; #bonus SELECT last_name FROM actor GROUP BY last_name HAVING COUNT(*) = 1; -select min(length) as min_duration, -max(length) as max_duration -from film; - -select floor(avg(length)) - from film; \ No newline at end of file