# #Back-end - A7-8 - 21/07
##### Aluno: Pedro Ciccone
###### tags: `Back-end`
### Exercícios aula
**1.** Quais gêneros distintos existem? A resposta deve ordernar pela quantidade decrescente e mostrar a quantidade de itens por gênero.
``` javascript=
select
listed_in as gêneros,
count(*)
from
netflix
group by
listed_in
order by
count desc;
```
**2.** Para os filmes, qual é a media de duração listando-os por gênero e ordenado-os pela duração de maneira decrescente? Dica: Utilize a função `SPLIT_PART`.
``` javascript=
select distinct
listed_in as gêneros,
avg((split_part(duration, ' ', 1))::real) as media_de_duração
from
netflix
where
type = 'Movie'
group by
listed_in
order by
media_de_duração desc;
```
**3.** Quais os gêneros listados que possuem maior quantidade de séries agrupados por ano de lançamento. Orderne-os pela quantidade de maneira decrescente.
``` javascript=
select distinct
release_year,
listed_in as gêneros,
count(*)
from
netflix
where
type = 'TV Show'
group by
release_year,
listed_in
order by
count desc;
```
**4.** Quantas produções não foram lançadas no mesmo ano de produção? Dica: Utilize a função `date_part`.
``` javascript=
select
count(date_added)
from
netflix
where
date_part ('year', date_added)::real <> release_year;
```
**5.** Quais são os cinco países mais produtores de séries sem considerar os Estados Unidos?
``` javascript=
select
country,
type,
count(*)
from
netflix
where
type = 'TV Show'
and country <> 'United States'
group by
country, type
order by
count desc
limit 5;
```
**6.** Por listagem de gênero, quantas produções existem que são classificadas para jovens de 17 anos ou apenas adultos? Ordene-as decrescentemente.
``` javascript=
select
listed_in,
rating,
count(*)
from
netflix
where
rating = 'R'
group by
listed_in, rating
order by
count desc;
```
**7.** Obtenha todas as produções que tiveram Antonio Banderas como principal ator (primeiro ator da listagem). Qual é a quantidade de produções? Dica: Utiliza a cláusula `LIKE`.
##### Código que bate com o gabarito:
``` javascript=
select
title,
casting,
from
netflix
where
casting like 'Antonio Banderas%'
group by
title,
casting;
```
##### Código para obter apenas o número de produções onde Antonio Banderas foi o ator principal:
``` javascript=
select
count(*)
from
netflix
where
casting like 'Antonio Banderas%';
```
**8.** Busque pela listagem de todos os atores. Dica: Existe a função `string_to_array` que transforma uma string (um texto) em uma lista (array) e a função `unnest` que transforma uma lista (array) em uma coluna. Ela funciona da seguinte maneira:
* Imagine o campo 'lista_de_empresas', um tipo de texto, contendo o valor:
`'Cubos, Sanar, Jusbrasil, B2W, Warren, Nubank'`
* Poderiamos transformar esse campo TEXT em ARRAY (uma lista) da seguinte forma:
`string_to_array(lista_de_empresas, ', ')`
* A primeira informação (argumento) que passamos para essa função é o texto que queremos quebrar, e o segundo é o delimitador, subtexto que vamos usar para quebrar (não se preocupe em contar esses resultados).
* Para transformar uma lista (array) em linhas, podemos usar a função `unnest`, e ela funciona da seguinte maneira:
`unnest(string_to_array(lista_de_empresas, ', '))`
``` javascript=
select
unnest(string_to_array(casting, ', '))
from
netflix;
```
9. Busque por todos os filmes que sejam da franquia Transformers, Star Wars, Harry Potter ou Lord of the Rings. Dica: utilize a cláusula `LIKE`.
``` javascript=
select
type,
title
from
netflix
where
title like '%Transformers%'
or title like '%Star Wars%'
or title like '%Harry Potter%'
or title like '%The Lord of the Rings%';
```
**10.** Quantas séries ou filmes envolvem alguma descrição com a palavra distópica (dystopian) ou zumbi (zombie)? A resposta deve conter a quantidade de filmes e series em grupos separados.
``` javascript=
select
type,
count(type)
from
netflix
where
description like '%dystopian%'
or description like '%zombie%'
group by
type;
```
**11.** Busque os anos de lançamento das 5 series com lançamento mais antigo e que não tenham sido produzidas nos Estados Unidos (primeira posição no campo de países) nem que o Reino Unido (United Kingdom) tenha participação.
``` javascript=
select
release_year
from
netflix
where
type = 'TV Show'
and not country like 'United States%'
and not country like '%United Kingdom%'
order by
release_year asc
limit 5;
```
**12.** Quais as durações e a quantidade de filmes que se enquadram nos seguintes critérios:
* Foi adicionado na plataforma entre 2015 e 2017;
* É listado de alguma forma como documentário (Documentaries);
* Possui duração entre 90 e 100 minutos;
* A resposta deve conter a duração e a quantidade de produção para cada duração;
* Ordenar pela quantidade decrescentemente.
``` javascript=
select
duration,
count(*)
from
netflix
where
type = 'Movie'
and (date_part('year', date_added)::INT >= '2015'
and date_part('year', date_added)::INT <= '2017')
and listed_in like '%Documentaries%'
and (split_part(duration, ' ', 1)::INT >= '90'
and split_part(duration, ' ', 1)::INT <= '100')
group by
duration
order by
count desc;
```
**13.** Entre os países produtores de Ficção Científica e Fantasia (Sci-Fi & Fantasy) busque aqueles que:
* não sejam os 10 maiores produtores;
* não sejam de nenhuma forma vinculados aos Estados Unidos (nenhuma produção de ficção científica e fantasia junto a eles).
Sua resposta deve conter apenas 5 países com a quantidade de produção.
``` javascript=
select
unnest (string_to_array(country, ', ')),
count(*)
from
netflix
where
listed_in like '%Sci-Fi%'
and listed_in like '%Fantasy%'
and not country like '%United States%'
group by
country
order by
count desc
offset 10
limit 5;
```
**14.** "Brazil" só produz conteúdo de comédia ou violento/de ação? Qual a relação da quantidade produzida geral pelo Brasil e com conteúdos que não são desses nichos? (A resposta pode estar em consultas separadas)
``` javascript=
select
count(*)
from
netflix
where
country like '%Brazil%'
and not listed_in like '%Comed%'
and not listed_in like '%Action%';
```
**15.** Faça uma consulta que respeite as seguintes condições:
* Cinco maiores produtores de conteúdo de música (Music & Musicals);
* Não tenha participação de Estados Unidos, nem Reino Unido, nem Índia;
* Possua as informações de listagem de gênero, os países que participam dessas produções (um ou mais) e a quantidade de produções;
* Cada item pode ter mais de um país.
``` javascript=
select
listed_in,
country,
count(*)
from
netflix
where
listed_in like '%Music & Musicals%'
and not country like '%United States%'
and not country like '%United Kingdom%'
and not country like '%India%'
group by
listed_in,
country
order by
count desc
limit 5;
```
### Exercícios casa
**1.** Quais alianças existem listadas? (para facilitar a comparação com a resposta, ordene alfabéticamente).
``` javascript=
```
**2.** Quantos personagens morreram que não eram nobres?
**Resposta:** .
``` javascript=
```
**3.** Quantas mulheres morreram em relação aos homens?
``` javascript=
```
**4.** Quais alianças perderam mais aliados?
``` javascript=
```
**5.** Quantas batalhas deram 'zebra', em que a quantidade atacante era menor do que a defensora e mesmo assim houve vitória pela parte atacante? Essas batalhas tinham algum tipo em particular?
``` javascript=
```
**6.** [Pode responder em mais de uma consulta] Os Stark mais venceram ou perderam batalhas, assumindo que o comandante atacante ou o rei atacante era um Stark? E para o caso dos Baratheons?
``` javascript=
```
**7.** Nas batalhas em que os defensores eram Stark, quem foram os reis que mais os atacaram?
``` javascript=
```