Ejercicios consultas sql

Buscar todos los clientes (customer) de paises que empiecen por ‘A’
Buscar todos los actores que hayan trabajado en películas de una longitud mayor de 140
Categorías con películas de rating ‘R’ (solo el nombre)

Ventas totales por empleado
Películas en las que han trabajado más de 10 actores
El título de la película que más se ha alquilado (en número de alquileres)
El título de la película que más dinero ha dado (en suma de importe)
Los 5 actores que han trabajado en menos películas

La referencia para los clientes es las dos primeras letras de su nombre y las dos primeras letras de su apellido. Hacer una consulta que nos muestre el id del cliente y esa referencia.
Quiero ver todos los pagos que se han hecho un viernes.
Las películas cuyo título tiene una longitud entre 10 y 15 caracteres.

Clientes que han hecho alquileres por encima de la media.
Clientes que no han alquilado documentales (‘documentary’)

select first_name, last_name from customer
where customer_id not in(
select customer_id from customer join rental using (customer_id)
join inventory using (inventory_id)
join film using (film_id) 
join film_category using(film_id)
join category using(category_id)
where name = 'Documentary'
)

2 comentarios en «Ejercicios consultas sql»

  1. — Buscar todos los clientes (customer) de paises que empiecen por ‘A’
    select first_name, last_name from customer join address using(address_id)
    join city using(city_id) join country using(country_id)
    where country like ‘a%’;

    — Buscar todos los actores que hayan trabajado en películas de una longitud mayor de 140
    select first_name, last_name from actor join film_actor using(actor_id) join film using(film_id)
    where length>140
    group by(actor_id);

    — Categorías con películas de rating ‘R’ (solo el nombre)
    select title from film
    where rating= ‘R’;

    — Ventas totales por empleado
    select first_name, last_name, sum(amount) total from payment join staff using(staff_id)
    group by (staff_id);

    — Películas en las que han trabajado más de 10 actores
    select title, count(actor_id) total from film join film_actor using(film_id) join actor using(actor_id)
    group by (film_id)
    having total>10
    limit 1;

    — El título de la película que más se ha alquilado (en número de alquileres)
    select title, count(rental_id) total from rental join inventory using(inventory_id) join film using(film_id)
    group by(film_id)
    order by total desc
    limit 1;

    — El título de la película que más dinero ha dado (en suma de importe)
    select title, sum(amount) total from film join inventory using(film_id) join rental using(inventory_id) join payment using(rental_id)
    group by (film_id)
    order by total desc
    limit 1;

    — Los 5 actores que han trabajado en menos películas
    select first_name, last_name, count(film_id) total from actor join film_actor using(actor_id) join film using(film_id)
    group by(actor_id)
    order by total
    limit 5;

    — La referencia para los clientes es las dos primeras letras de su nombre y las dos primeras letras de su apellido. Hacer una consulta que nos muestre el id
    — del cliente y esa referencia.
    select customer_id, concat(substring(first_name, 1,2), substring(last_name, 1,2)) referencia from customer;

    — Quiero ver todos los pagos que se han hecho un viernes.
    select * from payment
    where dayofweek(payment_date)=6;

    — Las películas cuyo título tiene una longitud entre 10 y 15 caracteres.
    select title from film
    where length(title)>10 and length(title)(select avg(total) from (
    select first_name,last_name, count(rental_id) total
    from customer join rental using(customer_id)
    group by customer_id) temporal);

    — Clientes que no han alquilado documentales (‘documentary’)
    select first_name, last_name from customer
    where customer_id not in (
    select customer_id
    from customer join rental using(customer_id) join inventory using(inventory_id) join film using(film_id) join film_category using(film_id)
    join category using(category_id)
    where name=’Documentary’);

  2. — Ventas totales por empleado
    select first_name, last_name, sum(amount) from staff join payment using (staff_id)
    group by staff_id;

    — Películas en las que han trabajado más de 10 actores

    select title, count(actor_id) total from film join film_actor using (film_id) join actor using (actor_id)
    group by actor_id
    having total>=10;

    — El título de la película que más se ha alquilado (en número de alquileres)

    select title, count(rental_id) veces from film join inventory using(film_id) join rental using(inventory_id)
    group by film_id
    order by veces desc
    limit 1;

    — El título de la película que más dinero ha dado (en suma de importe)

    select title , sum(amount) total from film join inventory using(film_id) join rental using(inventory_id) join payment using(rental_id)
    group by film_id
    order by total desc
    limit 1;

    — Los 5 actores que han trabajado en menos películas

    select first_name, last_name, count(actor_id) total from film join film_actor using (film_id) join actor using (actor_id)
    group by actor_id
    order by total asc
    limit 5;

    — La referencia para los clientes es las dos primeras letras de su nombre y las dos primeras letras de su apellido.
    — Hacer una consulta que nos muestre el id del cliente y esa referencia.

    select customer_id,concat(substr(first_name,1,2),substr(last_name,1,2))as referencia from customer;

    — Quiero ver todos los pagos que se han hecho un viernes.

    select amount,payment_date from payment where weekday(payment_date) = 4
    order by payment_date asc;

    — Las películas cuyo título tiene una longitud entre 10 y 15 caracteres.

    SELECT * FROM sakila.film where length(title) between 10 and 15;

    — Clientes que han hecho alquileres por encima de la media.

    select first_name,last_name, count(rental_id) total
    from customer join rental using(customer_id)
    group by customer_id
    having total>(select avg(total) from (
    select first_name,last_name, count(rental_id) total
    from customer join rental using(customer_id)
    group by customer_id) temporal);

    — Clientes que no han alquilado documentales (‘documentary
    select first_name,last_name from customer where customer_id not in (
    select customer_id from customer join rental using (customer_id)
    join inventory using (inventory_id)
    join film using (film_id)
    join film_category using(film_id)
    join category using(category_id)
    where name = ‘Documentary’)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.