Skip to content
Snippets Groups Projects
Commit 7f4d65aa authored by jvfpw18's avatar jvfpw18
Browse files

Fix idm execution with more than 1 year

parent 5dbfd00c
No related branches found
No related tags found
No related merge requests found
......@@ -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
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),
WHERE ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_id <=3
GROUP BY serie_ano_id, estado_id, ano_censo, localizacao_id),
div_brasil AS (SELECT sum(total_estado) AS total_brasil, serie_ano_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, ano_censo, localizacao_id
FROM div_estado
GROUP BY serie_ano_id),
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
);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment