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