1
resposta

[Dúvida] CONSULTAS NO POSTGRESQL

Tenho duas tabelas e preciso de uma consulta para responder esta pergunta:

Quais estados possuem municípios com o mesmo nome do estado? Informe o nome do município, sua população total, a sigla do estado à qual pertence e o percentual que sua população representa do total da população do estado.

(Ex.: A cidade de São Paulo faz parte do estado de São Paulo)

Saída: Municipio, Sigla Estado, População, Percentual

CREATE TABLE sch_estados.estado (
    id SERIAL PRIMARY KEY,
    nome_estado VARCHAR(100) NOT NULL,
    sigla_estado CHAR(2) NOT NULL
);




-- Criação da tabela cidade
CREATE TABLE sch_estados.cidade (
    id_cidade VARCHAR(30) PRIMARY KEY,
    id_estado INT,
    capital VARCHAR(100) NOT NULL,
    cidade VARCHAR(100) NOT NULL,
    populacao_total INT,
    populacao_brasileiros INT,
    populacao_estrangeiros INT,
    casas_total INT,
    casas_urbana INT,
    casas_rural INT,
    populacao_urbana INT,
    populacao_menos_1_ano INT,
    populacao_1_a_4_anos INT,
    populacao_5_a_9 INT,
    populacao_10_a_14 INT,
    populacao_15_a_59 INT,
    populacao_60_ou_mais INT,
    indice_desenvolvimento_humano DECIMAL(3,3),
    CONSTRAINT fk_estado FOREIGN KEY (id_estado) REFERENCES sch_estados.estado(id)
);
1 resposta

Boa noite Yan!

Considerando que você deseja encontrar municípios cujos nomes são iguais ao nome do estado ao qual pertencem, você pode utilizar a seguinte query SQL que faz um JOIN entre as tabelas de estados e cidades, filtra os resultados para os casos onde o nome da cidade é igual ao nome do estado, e calcula o percentual da população do município em relação à população total do estado:

SELECT 
    c.cidade AS Municipio,
    e.sigla_estado AS "Sigla Estado",
    c.populacao_total AS População,
    ROUND((c.populacao_total::DECIMAL / SUM(c.populacao_total) OVER (PARTITION BY c.id_estado)) * 100, 2) AS Percentual
FROM 
    cidade c
JOIN 
    estado e ON c.id_estado = e.id
WHERE 
    c.cidade = e.nome_estado;

Esta consulta retornará os municípios que têm o mesmo nome dos seus respectivos estados, juntamente com a população do município e o percentual que essa população representa do total da população do estado. Lembre-se de adaptar a query para seu cenário. Exemplo de resultado:

Imagem do resultado mostrando município do Rio de Janeiro e São Paulo

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!