-- Crear una consulta que me -- muestre las iniciales de los clientes en formato 'A.D.' select concat_ws('. ',substring(first_name,1,1),substring(last_name,1,1),'') nombre from customer; select concat(substring(first_name,1,1),'. ',substring(last_name,1,1),'.') nombre from customer; select concat(left(first_name,1),'. ',left(last_name,1),'.') nombre from customer; -- Crear una consulta que me muestre los paises que tengan una ciudad que empiece por la misma letra que el país. select distinct country from country join city using(country_id) where substring(country,1,1)=substring(city,1,1); -- Crear una consulta que me muestre todos los nombres de actores que -- contengan la letra z pero sin la letra z es decir si tengo un actor gomez me mostrará gome select replace(first_name,'Z','') nombre, replace(last_name,'Z','') apellido from actor where first_name like '%z%' or last_name like '%z%'; select replace(upper(first_name),'Z','') nombre, replace(upper(last_name),'Z','') apellido from actor where first_name like '%z%' or last_name like '%z%'; -- Crear una consulta que me muestre el título de la película y 'barata' si su replacement_const es menor de 15, -- 'cara' si es mayor de 25 y 'media' en cualquier otro caso. select title, case when replacement_cost<15 then 'barata' when replacement_cost>25 then 'cara' else 'media' end tipo from film; -- Crear una consulta que me muestre el total de alquileres de las películas -- y me lo clasifique en 3 tramos 'alto', 'medio' y 'bajo' dependiendo de la -- cantidad de veces que se ha alquilado. Pensad bien que valores vamos a usar como límites select title, case when count(rental_id) <15 then 'bajo' when count(rental_id) <25 then 'medio' else 'alto' end tipo from film join inventory using(film_id) join rental using(inventory_id) group by film_id; -- Que pasa si queremos que sea dinámico, es decir, que si tengo más alquileres -- el rango cambie SELECT COUNT(ren.`rental_id`) AS total_rental, fil.`title`, CASE WHEN COUNT(ren.`rental_id`) > (max_rental / 3) * 2 THEN 'Alto' WHEN COUNT(ren.`rental_id`) > (max_rental / 3) THEN 'Medio' ELSE 'Bajo' END AS type_rental, max_rental FROM `rental` ren JOIN `inventory` inv ON ren.`inventory_id` = inv.`inventory_id` JOIN `film` fil ON inv.`film_id` = fil.`film_id` JOIN ( SELECT MAX(count_total) AS max_rental FROM ( SELECT COUNT(ren.`rental_id`) AS count_total FROM `rental` ren JOIN `inventory` inv ON ren.`inventory_id` = inv.`inventory_id` JOIN `film` fil ON inv.`film_id` = fil.`film_id` GROUP BY inv.`film_id` ) AS total_rental_tmp ) AS max_rental_tmp GROUP BY inv.`film_id` ORDER BY total_rental DESC; -- Otra manera de hacerlo create view alquileres_por_pelicula as SELECT fil.film_id,title, COUNT(ren.`rental_id`) AS total FROM `rental` ren JOIN `inventory` inv ON ren.`inventory_id` = inv.`inventory_id` JOIN `film` fil ON inv.`film_id` = fil.`film_id` GROUP BY fil.`film_id`; -- con esta vista creada la cosa se quedda así: select title, CASE WHEN total > ((select max(total) from alquileres_por_pelicula) / 3) * 2 THEN 'Alto' WHEN total > ((select max(total) from alquileres_por_pelicula) / 3) THEN 'Medio' ELSE 'Bajo' END AS type_rental from alquileres_por_pelicula;