---
# System prepended metadata

title: '#Back-end - A7-8 - 21/07'
tags: [Back-end]

---

# #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=

```