![](https://i.imgur.com/xG74tOh.png) ### Instruções para Exercícios Existem exercícios para serem feitos em aula e para feitos em casa. Caso você termine os destinados a aula, você pode começar e tirar dúvidas daqueles de casa; Observação: O dataset (conjunto de dados) que usaremos está no link a seguir com o nome de dataset.sql: https://drive.google.com/drive/folders/1cVAKBb53d4hKAwd-aXwgiX4tM4iJirdb Assumindo que você já tenha feito a configuração do Heroku e DBeaver, siga os passos abaixo: 1. Baixe o dataset. 2. Abra o DBeaver; 3. Crie um novo editor (aba SQL Editor -> SQL Editor) e importe o arquivo SQL que você baixou (aba SQL Editor -> Import SQL Script); 4. Escolha a opção **Execute SQL Script** (aba SQL Editor -> Execute SQL Script); 5. Abra uma nova aba de consulta (aba SQL Editor -> New SQL Editor) 6. Faça suas consultas e rode-as com o passo (4). ### Dataset Este dataset é referente a informações sobre países, nele existe uma tabela chamada countries (em português, países) com 16 colunas, 15 delas são informações sobre estes países. As perguntas dos exercícios referem-se a conhecimentos que talvez não tenhamos ainda, por isso segue uma explicação de alguns deles. - Taxa Migratória (taxa_migratoria) A relação entre pessoas que sairam de um país (emigração) e a relação das pessoas que entraram em um país (imigração). _Um valor positivo significa um valor maior de pessoas que entraram no país do que sairam._ - Agricultura, Serviço e Industria Esses campos somados dão 1, ou seja, 100%. Estes três campos referem-se a informações de como um país tem sua economia dividida. Então, alguns investem mais em agricultura, enquanto outros em serviços e outros em industria com fábricas e produção de máquinas, por exemplo. - Telefonia Movel (telefonia_movel) Refere-se a quantidade de pessoa a acesso a telefones móveis para cada 1000 habitantes. - Taxa de natalidade e mortalidade São taxas, respectivamente, são informações de pessoas nascidas e falecidas em um ano para cada 1000 habitantes. - Alfabetização Taxa em porcentagem de pessoas alfabetizadas dentro de um país. - PIB (Produto interno bruto) per Capita De maneira pragmática, o quanto de riqueza tem um país dividido por sua popuação. Você pode ler um pouquinho mais wiki (https://pt.wikipedia.org/wiki/Produto_interno_bruto#PIB_per_capita) - Densidade populacional Refere-se a quantidade de pessoas dentro de um espaço. É medido em habitantes por metro quadrado (m²). - Razão entre área litorânea pela área do país (area_costeira_por_area). Razão entre a extensão literorânea de um país e sua área. Essa relação "Litoral / Superfície" (m/km²) é maior, geralmente, para ilhas e para países de litoral muito recortado (ex.: Grécia) e menor para países muito extensos e de litoral pouco acidentado (ex.: Argentina). Você pode ler mais aqui: (https://pt.wikipedia.org/wiki/Lista_das_extens%C3%B5es_litor%C3%A2neas_dos_pa%C3%ADses) *Lembrem-se: é comum no trabalho de um desenvolvedor backend aprender sobre assuntos diversos para conseguir executar seu trabalho. Essas informações fazem parte disso :smiley:.* ### Exercícios para Aula 1. Quais as regiões distintas contidas no dataset ordenadas alfabeticamente? ```sql select distinct regiao from countries group by regiao order by regiao asc; ``` (`group by` é opcional aqui) Resposta: | Regiões | | -------- | | ASIA (EX. NEAR EAST) | | BALTICS | | C.W. OF IND. STATES | | EASTERN EUROPE | | LATIN AMER. & CARIB | | NEAR EAST | | NORTHERN AFRICA | | NORTHERN AMERICA | | OCEANIA | | SUB-SAHARAN AFRICA | | WESTERN EUROPE | 2. Quantos países existem por região? ```sql select distinct regiao, count(regiao) from countries group by regiao order by regiao asc; ``` Resposta: | Regiões | Quantidade | | -------- | -------- | | ASIA (EX. NEAR EAST) | 28 | | BALTICS | 3 | | C.W. OF IND. STATES | 12 | | EASTERN EUROPE | 12 | | LATIN AMER. & CARIB | 45 | | NEAR EAST | 16 | | NORTHERN AFRICA | 6 | | NORTHERN AMERICA | 5 | | OCEANIA | 21 | | SUB-SAHARAN AFRICA | 51 | | WESTERN EUROPE | 28 | 3. Quais são os 5 países com menor acesso a telefonia móvel que possuam a partir de 5 milhões de habitantes, uma densidade populacional de pelo menos 250 e que possua um PIB per Capita acima de 1000? ```sql select * from countries where populacao >= 5000000 and densidade_populacional >= 250 and PIB > 1000 order by telefonia_movel asc limit 5; ``` (também pode começar com `select pais from`...) Resposta: | Países | | -------- | | Rwanda | | Bangladesh | | Haiti | | Philippines | | India | 4. Com as mesmas condições, quais são os 5 países seguintes aos da questão anterior? Construa essa consulta de forma que não exiba os 5 países que foram mostrados anteriormente (Rwanda, Bangladesh, Haiti, Philippines e India) ```sql select * from countries where populacao >= 5000000 and densidade_populacional >= 250 and PIB > 1000 order by telefonia_movel asc limit 5 offset 5; ``` (também pode começar com `select pais from`...) Resposta: | Países | | -------- | | Sri Lanka | | El Salvador | | Vietnam | | Netherlands | | Japan | 5. Procure por países que sejam de uma das seguintes regiões: SUB-SAHARAN AFRICA, NORTHERN AFRICA ou NEAR EAST, possuam um economia baseada em mais do que 66% em indústria e que represente um PIB per Capita maior que 5000; ```sql select * from countries where (regiao = 'SUB-SAHARAN AFRICA' or regiao = 'NORTHERN AFRICA' or regiao = 'NEAR EAST') and industria_porcentagem > 0.66 and PIB > 5000; ``` Resposta: | Países | | ------ | | Qatar | 6. Busca por países que a soma da porcentagem do investimento em industria e serviços seja maior ou igual que 75%. Estes países não podem ser da América nem da Europa (ocidental e oriental, EASTERN e WESTERN), que possuam alfabetização acima de 90% e uma taxa migratória zero. ```sql select * from countries where (industria_porcentagem + servicos_porcentagem) >= 0.75 and (regiao <> 'LATIN AMER. & CARIB' and regiao <> 'NORTHERN AMERICA' and regiao <> 'EASTERN EUROPE' and regiao <> 'WESTERN EUROPE') and taxa_migratoria = 0 and alfabetizacao > 90 ; ``` (também pode começar com `select pais from`...) Resposta: | Países | | -------- | | Cook Islands | | Japan | | South Korea | | Maldives | | Mongolia | | New Caledonia | | Taiwan | | Thailand | | Tonga | | Zimbabwe | ### Exercícios para Casa 1. Quais são os maiores e menores valores para os investimentos de indústria dentro de um país? Quais países são estes? (quaisquer das duplas de consultas a seguir são respostas válidas) ```sql select max(industria_porcentagem) from countries ; ``` ```sql select min(industria_porcentagem) from countries ; ``` ```sql select pais, industria_porcentagem from countries order by industria_porcentagem desc limit 1 ; ``` ```sql select pais, industria_porcentagem from countries order by industria_porcentagem asc limit 1 ; ``` Resposta: | Países | Indústria | | -------- | -------- | | Equatorial Guinea | 0.906 | | Países | Indústria | | -------- | -------- | | American Samoa | 0 | 2. Quais seriam os 5 países que menos nascem e menos morrem assim como tem sua menor taxa de natalidade em relação aos outros países ao mesmo tempo e que seja da região da Ásia ou Europa (ocidental e oriental) e que sua população esteja entre 5 milhões até 100 milhões e que possuam mais imigrantes do que emigrantes e que seu PIB per Capita esteja entre 15 e 30 mil e por último que a economia seja baseada acima de 70% em serviços? ```sql select * from countries where (regiao = 'ASIA (EX. NEAR EAST)' or regiao = 'WESTERN EUROPE' or regiao = 'EASTERN EUROPE') and (populacao >= 5000000 and populacao <= 100000000) and (pib >= 15000 and pib <= 30000) and taxa_migratoria > 0 and servicos_porcentagem > 0.70 order by taxa_natalidade, taxa_mortalidade, mortalidade_infantil asc limit 5; ``` Resposta: | Países | | -------- | | Hong Kong | | Greece | | Sweden | | | Belgium | | United Kingdom | 3. Quais os 5 países com maior mortalidade infantil que tem: - PIB per capita a partir de 10000; - alfabetização maior que 90%; - população entre 1 milhão e 300 milhões excluindo a faixa de 10 milhões a 40 milhões; ```sql select pais from countries where pib >= 10000 and alfabetizacao > 90 and ((populacao >= 1000000 and populacao <= 10000000) or (populacao >= 40000000 and populacao <= 300000000)) order by mortalidade_infantil desc limit 5; ``` Resposta: | Países | | -------- | | Uruguay | | Latvia | | Hungary | | Puerto Rico | | Estonia | 4. É possível dizer que as taxas de PIB per Capita e de telefonia_movel estão relacionadas? 4. **Esse exercício não precisa ser resolvido com uma consulta apenas.** Vamos fazer uma análise e especular se países com áreas litorâneas possuem melhor qualidade de vida? Vamos assumir: A. Alto PIB per Capita; B. Baixas taxas de mortalidade infantil e mortalidade; Então vamos fazer o seguinte? 0. Vamos ordernar nossa lista pelos maiores valores de PIB per Capita, menores valores de taxa de mortalidade infantil e taxa de mortalidade; 1. Obter a quantidade de países que possuem costa litorânea e os que não possuem; 2. Para os países com costa litorânea, vamos separar os países por regiões e quantidade de países em cada região que possuem costa litorânea; 3. É passível de assumir que países da Europa e América do Norte enviesam nossa especulação. Vamos remover eles dos grupos anteriores; 4. Para os países que achamos que eles possuem melhor qualidade de vida, é possível saber se eles estão criando descendentes (taxa de natalidade positiva)? 5. Se baseando nas nossas premissas A e B, será que é também fácil assumir que pessoas alfabetizadas possuem melhor qualidade de vida? Vamos ordenar alfabetização também? 6. Os países que possuem melhor qualidade de vida provavelmente possuem uma taxa positiva de migração, vamos filtrar por isso! 7. Por último, é possível imaginar quais tipos de economia (indústria e serviço, temos esses dados em porcentagem no banco!) fazem de um país mais feliz, será que é possível ver algum padrão nisso? Vamos filtrar também por esses valores? Será que é possível declarar alguma coisa com esses dados filtrados?