Skip to content

Instantly share code, notes, and snippets.

@romulomourao
Last active November 4, 2023 11:38
Show Gist options
  • Save romulomourao/22fc1fe5631dd3b39e515834687fc6c9 to your computer and use it in GitHub Desktop.
Save romulomourao/22fc1fe5631dd3b39e515834687fc6c9 to your computer and use it in GitHub Desktop.

Exercícios SQL (Base de dados Sakila)

  1. Lista de todos os filmes
SELECT * 
FROM film;
  1. Lista do titulo de todos os filmes
SELECT title 
FROM film;
  1. Lista de filmes com duração menor do que 60 minutos
SELECT *
FROM film
WHERE length < 60;
  1. Lista dos clientes inativos
SELECT *
FROM customer
WHERE active = 0;
  1. Lista dos clientes ativos e respectivos endereços
SELECT first_name, last_name, address
FROM customer c, address a
WHERE active = 1 AND c.address_id = a.address_id;
  1. Lista dos nomes dos clientes residentes no Brasil.
SELECT first_name, last_name, a.address, co.country
FROM customer c, address a, city ct, country co
WHERE c.address_id = a.address_id
	AND a.city_id = ct.city_id 
	AND ct.country_id = co.country_id
    AND co.country = "Brazil";
  1. Relação de filmes e atores que atuaram no mesmo
SELECT f.title, a.first_name, a.last_name
FROM film f, film_actor fa, actor a
WHERE f.film_id = fa.film_id AND a.actor_id = fa.actor_id
  1. Relação de filmes e atores que atuaram no mesmo ordenada por filme
SELECT f.title, a.first_name, a.last_name
FROM film f, film_actor fa, actor a
WHERE f.film_id = fa.film_id AND a.actor_id = fa.actor_id
ORDER BY f.title
  1. Relação de filmes e atores que atuaram no mesmo ordenada por ator
SELECT f.title, a.first_name, a.last_name
FROM film f, film_actor fa, actor a
WHERE f.film_id = fa.film_id AND a.actor_id = fa.actor_id
ORDER BY a.first_name
  1. Relação de filmes com participação de um ator específico.
SET @ator := "scarlett";

SELECT f.title, a.first_name, a.last_name
FROM film f, film_actor fa, actor a
WHERE f.film_id = fa.film_id AND a.actor_id = fa.actor_id
AND a.first_name = @ator;
  1. Quantidade total de filmes
SELECT COUNT(*) qtd_filmes
FROM film;
  1. Duração média dos filmes
SELECT AVG(length)
FROM film;
  1. Lista de filmes por categoria.
SELECT f.title, c.name 
FROM film f,category c, film_category fc
WHERE f.film_id = fc.film_id
  AND fc.category_id = c.category_id;
  1. Quantidade de filmes por categoria.
SELECT c.name, COUNT(*)
FROM film f,category c, film_category fc
WHERE f.film_id = fc.film_id AND fc.category_id = c.category_id
GROUP BY c.name;
  1. Duração média dos filmes por categoria
SELECT c.name, AVG(f.length)
FROM film f,category c, film_category fc
WHERE f.film_id = fc.film_id 
  AND fc.category_id = c.category_id
GROUP BY c.name;
  1. Quantidade de filmes por categoria das categorias com menos de 57 filmes
SELECT c.name, COUNT(*) qtd
FROM film f,category c, film_category fc
WHERE f.film_id = fc.film_id AND fc.category_id = c.category_id
GROUP BY c.name
HAVING qtd < 57;
  1. Duração média dos filmes por categoria das categorias com menos de 57 filmes
SELECT c.name, COUNT(*) qtd, AVG(f.length)
FROM film f,category c, film_category fc
WHERE f.film_id = fc.film_id AND fc.category_id = c.category_id
GROUP BY c.name
HAVING qtd < 57;
  1. Quantidade de filmes alugados por cliente
SELECT c.first_name, c.last_name, COUNT(*)
FROM customer c, rental r
WHERE c.customer_id = r.customer_id
GROUP BY (c.customer_id);
  1. Quantidade de filmes alugados por cliente em ordem decrescente de quantidade de filmes alugados
SELECT c.first_name, c.last_name, COUNT(*) qtd
FROM customer c, rental r
WHERE c.customer_id = r.customer_id
GROUP BY (c.customer_id)
ORDER BY qtd desc;
  1. Relação de nomes dos clientes que possuem um filme alugado no momento
SELECT c.first_name, c.last_name
FROM customer c
WHERE EXISTS (SELECT 1 
	FROM rental r
    WHERE c.customer_id = r.customer_id AND r.return_date IS NOT NULL);
  1. Relação de nomes dos clientes que não possuem um filme alugado no momento
SELECT c.first_name, c.last_name
FROM customer c
WHERE NOT EXISTS (SELECT 1 
	FROM rental r
    WHERE c.customer_id = r.customer_id AND r.return_date IS NOT NULL);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment