Escolar Documentos
Profissional Documentos
Cultura Documentos
Entrega:
Questão 1:
CREATE VIEW consulta_dados AS
SELECT
uf.cd_uf AS cod_unidade_federacao,
uf.uf AS unidade_federacao,
mun.cd_mun AS cod_municipio,
mun.municipio AS municipio,
dbc.id AS id_dados_brutos,
db.dados_brutos AS dados_brutos,
dbc.A_2010,
dbc.A_2011,
dbc.A_2012,
dbc.A_2013,
dbc.A_2014,
dbc.A_2015,
dbc.A_2016,
dbc.A_2017,
dbc.A_2018,
dbc.A_2019
FROM unidades_federacao uf
JOIN dados_brutos_capitais dbc ON uf.cd_uf = dbc.cd_uf
JOIN municipios mun ON mun.cd_mun = dbc.cd_mun
JOIN dados_brutos db ON dbc.id = db.id
WHERE uf.cd_uf = 35;
Questão 2:
Soluções propostas:
Caso os dados sejam estáticos, é possível criar um materialized view com as informações, para
que as próximas consultas sejam mais ágeis e não precisem ser processadas:
SELECT /*+ INDEX(uf idx_cd_uf) INDEX(dbc idx_cd_uf_capitais) INDEX(mun idx_cd_mun_capitais) INDEX(db idx_id_db)
INDEX(mun idx_municipio) */
uf.uf,
mun.municipio,
db.dados_brutos,
dbc.A_2018
FROM unidades_federacao uf
JOIN dados_brutos_capitais dbc ON uf.cd_uf = dbc.cd_uf
JOIN municipios mun ON mun.cd_mun = dbc.cd_mun
JOIN dados_brutos db ON dbc.id = db.id
--where A_2018 between 50000 and 90000
and LOWER(mun.municipio) = 'curitiba';
Questão 5:
CREATE VIEW consulta_dados_uf AS
SELECT
uf.CD_UF CODIGO_UF,
dbc.A_2019 ANO_2019,
dbc.A_2018 ANO_2018,
dbc.A_2017 ANO_2017,
dbc.A_2016 ANO_2016,
dbc.A_2015 ANO_2015,
dbc.A_2014 ANO_2014,
dbc.A_2013 ANO_2013,
dbc.A_2012 ANO_2012,
dbc.A_2011 ANO_2011,
dbc.A_2010 ANO_2010
FROM unidades_federacao uf
JOIN dados_brutos_capitais dbc ON uf.cd_uf = dbc.cd_uf
JOIN dados_brutos db ON dbc.id = db.id
WHERE dbc.CD_UF = 31;