-- Exercicio 18
-- Objetivo: Criar o mapa de mesorregiões de Goiás com valores de densidade demográfica no ano de 2005, 
-- calculados a partir da soma da população de cada município e área da mesorregião calculada em Km2. 
-- Vamos utilizar o mapa de municípios de Goiás com os atributos de população em 2005 e a mesorregião 
-- a qual pertence cada município.

SELECT * 
   FROM municipio;
-- * Inicialmente listamos todos os campos e registros da camada de municípios de GO.

SELECT NOME_ACEN, NOMEMESO, POPTOTAL05 
   FROM municipio;
-- * Selecionamos alguns dos campos de interesse.

SELECT NOME_ACEN, NOMEMESO, SUM(POPTOTAL05) 
   FROM municipio;
-- * População total de todos os municípios é calculado, mas somente um registro dos campos NOME_ACEN e NOMEMESO é apresentado.

SELECT NOME_ACEN, NOMEMESO, SUM(POPTOTAL05) 
   FROM municipio 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões, mas o primeiro registro do campo NOME_ACEN não faz mais sentido aparecer.

SELECT NOMEMESO, SUM(POPTOTAL05) 
   FROM municipio 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões. Confirme em "Estatísticas por categoria" na Caixa de Ferramentas.

SELECT NOMEMESO, SUM(POPTOTAL05) 
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões. Vamos excluir o DF que está com valor NULL.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO 
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões. Melhorando o nome da coluna da soma da população.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO 
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' AND NOMEMESO LIKE '%ESTE%' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões que têm a as letras "ESTE" no nome.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO 
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões. Clique “Carregando como nova camada” e clique (Carregar). Abra a tabela e veja que não há geometria disponível.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO, ST_UNION(geometry) 
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões. Carregando como nova camada com geometria.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO, ST_AREA(ST_UNION(geometry))/1000000 AS AREA, ST_UNION(geometry)
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões e cálculo de área em KM2.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO, ST_AREA(ST_UNION(geometry))/1000000 AS AREA, 
  SUM(POPTOTAL05)/(ST_AREA(ST_UNION(geometry))/1000000) AS DENSIDADE, ST_UNION(geometry)
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO;
-- * População total de todas as mesorregiões, cálculo de área em KM2 e densidade demográfica.

SELECT NOMEMESO, SUM(POPTOTAL05) AS SOMAPOPMESO, ST_AREA(ST_UNION(geometry))/1000000 AS AREA, 
  ROUND(SUM(POPTOTAL05)/(ST_AREA(ST_UNION(geometry))/1000000),2) AS DENSIDADE, ST_UNION(geometry)
   FROM municipio  
   WHERE POPTOTAL05 != 'NULL' 
   GROUP BY NOMEMESO
   ORDER BY DENSIDADE;
-- * População total de todas as mesorregiões, cálculo de área em KM2 e densidade demográfica arredondando com 2 casas decimais, ordenada pela densidade.



