From 7f4d65aa85870fd4d9ec0fe52236643689d37012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor=20Frans=20Pondaco=20Winandy?= <jvfpw18@inf.ufpr.br> Date: Wed, 29 May 2019 10:13:32 -0300 Subject: [PATCH] Fix idm execution with more than 1 year --- idm.sql | 85 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 67 insertions(+), 18 deletions(-) diff --git a/idm.sql b/idm.sql index 6f4177a..212f53a 100644 --- a/idm.sql +++ b/idm.sql @@ -23,31 +23,80 @@ along with HOTMapper. If not, see <https://www.gnu.org/licenses/>. CREATE TABLE indice_distribuicao_matriculas AS ( - WITH div_estado AS (SELECT count(serie_ano_id) AS total_estado, serie_ano_id, estado_id - FROM matricula - WHERE ano_censo=2017 AND tipo <= 3 AND dependencia_adm_id <=3 - GROUP BY serie_ano_id, estado_id), + WITH div_estado AS + (SELECT count(serie_ano_id) AS total_estado, serie_ano_id, estado_id, ano_censo, localizacao_id + FROM matricula + WHERE ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_id <=3 + GROUP BY serie_ano_id, estado_id, ano_censo, localizacao_id), + + div_estado_mod AS + (SELECT count(serie_ano_id) AS total_estado_mod, cast(LEFT(serie_ano_id, 1) as integer) as serie_mod, estado_id, + ano_censo, localizacao_id + FROM matricula + WHERE ano_censo >= 2017 AND tipo <= 3 AND dependencia_adm_id <= 3 + GROUP BY serie_mod, estado_id, ano_censo, localizacao_id), - div_brasil AS (SELECT sum(total_estado) AS total_brasil, serie_ano_id - FROM div_estado - GROUP BY serie_ano_id), + div_brasil AS + (SELECT sum(total_estado) AS total_brasil, serie_ano_id, ano_censo, localizacao_id + FROM div_estado + GROUP BY serie_ano_id, ano_censo, localizacao_id), + + div_brasil_mod AS + (SELECT sum(total_brasil) AS total_brasil_mod, cast(LEFT(serie_ano_id, 1) as integer) as serie_mod, ano_censo, localizacao_id + FROM div_brasil + GROUP BY serie_mod, ano_censo, localizacao_id), nivel_sim1 AS - (SELECT ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_brasil AS total_etapa, - cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, 1 AS nivel_simulacao + (SELECT matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_brasil AS total_etapa, + cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, 1 AS nivel_simulacao, + matricula.localizacao_id FROM matricula JOIN div_brasil ON matricula.serie_ano_id=div_brasil.serie_ano_id - WHERE ano_censo=2017 AND tipo <= 3 AND dependencia_adm_priv <=3 - GROUP BY ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_etapa), + AND matricula.ano_censo=div_brasil.ano_censo + AND matricula.localizacao_id=div_brasil.localizacao_id + WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3 + GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_etapa, + matricula.localizacao_id), nivel_sim2 AS - (SELECT ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_estado AS total_etapa, - cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, 2 AS nivel_simulacao - FROM matricula JOIN div_estado ON - matricula.serie_ano_id=div_estado.serie_ano_id AND matricula.estado_id=div_estado.estado_id - WHERE ano_censo=2017 AND tipo <= 3 AND dependencia_adm_priv <=3 - GROUP BY ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_etapa) - + (SELECT matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_estado AS total_etapa, + cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, 2 AS nivel_simulacao, + matricula.localizacao_id + FROM matricula JOIN div_estado ON matricula.serie_ano_id=div_estado.serie_ano_id + AND matricula.estado_id=div_estado.estado_id + AND matricula.ano_censo=div_estado.ano_censo + AND matricula.localizacao_id=div_estado.localizacao_id + WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3 + GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_etapa, + matricula.localizacao_id), + + nivel_sim1_mod AS + (SELECT matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod as serie_ano_id, + total_brasil_mod AS total_etapa, cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, + 1 AS nivel_simulacao, matricula.localizacao_id + FROM matricula JOIN div_brasil_mod ON LEFT(matricula.serie_ano_id, 1)=div_brasil_mod.serie_mod + AND matricula.ano_censo=div_brasil_mod.ano_censo + AND matricula.localizacao_id=div_brasil_mod.localizacao_id + WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3 + GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod, total_etapa, + matricula.localizacao_id), + + nivel_sim2_mod AS + (SELECT matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod as serie_ano_id, + total_estado_mod AS total_etapa, cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, + 2 AS nivel_simulacao, matricula.localizacao_id + FROM matricula JOIN div_estado_mod ON LEFT(matricula.serie_ano_id, 1)=div_estado_mod.serie_mod + AND matricula.estado_id=div_estado_mod.estado_id + AND matricula.ano_censo=div_estado_mod.ano_censo + AND matricula.localizacao_id=div_estado_mod.localizacao_id + WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3 + GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod, total_etapa, + matricula.localizacao_id) + SELECT * FROM nivel_sim1 UNION ALL SELECT * FROM nivel_sim2 +UNION ALL +SELECT * FROM nivel_sim1_mod +UNION ALL +SELECT * FROM nivel_sim2_mod ); -- GitLab