diff --git a/idm.sql b/idm.sql index 212f53a89d34c789420815472008f39268fbb4ce..c7062e43e5e47974ae16657ab992d23d099e8c0f 100644 --- a/idm.sql +++ b/idm.sql @@ -24,73 +24,79 @@ 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, ano_censo, localizacao_id + (SELECT count(serie_ano_id) AS total_estado, serie_ano_id, estado_id, ano_censo, localizacao_id, + dependencia_adm_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), + GROUP BY serie_ano_id, estado_id, ano_censo, localizacao_id, dependencia_adm_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 + ano_censo, localizacao_id, dependencia_adm_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), + GROUP BY serie_mod, estado_id, ano_censo, localizacao_id, dependencia_adm_id), div_brasil AS - (SELECT sum(total_estado) AS total_brasil, serie_ano_id, ano_censo, localizacao_id + (SELECT sum(total_estado) AS total_brasil, serie_ano_id, ano_censo, localizacao_id, dependencia_adm_id FROM div_estado - GROUP BY serie_ano_id, ano_censo, localizacao_id), + GROUP BY serie_ano_id, ano_censo, localizacao_id, dependencia_adm_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 + (SELECT sum(total_brasil) AS total_brasil_mod, cast(LEFT(serie_ano_id, 1) as integer) as serie_mod, ano_censo, + localizacao_id, dependencia_adm_id FROM div_brasil - GROUP BY serie_mod, ano_censo, localizacao_id), + GROUP BY serie_mod, ano_censo, localizacao_id, dependencia_adm_id), nivel_sim1 AS (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 + matricula.localizacao_id, matricula.dependencia_adm_id FROM matricula JOIN div_brasil ON matricula.serie_ano_id=div_brasil.serie_ano_id AND matricula.ano_censo=div_brasil.ano_censo AND matricula.localizacao_id=div_brasil.localizacao_id + AND matricula.dependencia_adm_id=div_brasil.dependencia_adm_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), + matricula.localizacao_id, matricula.dependencia_adm_id), nivel_sim2 AS (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 + matricula.localizacao_id, matricula.dependencia_adm_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 + AND matricula.dependencia_adm_id=div_estado.dependencia_adm_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), + matricula.localizacao_id, matricula.dependencia_adm_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 + 1 AS nivel_simulacao, matricula.localizacao_id, matricula.dependencia_adm_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 + AND matricula.dependencia_adm_id=div_brasil_mod.dependencia_adm_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), + matricula.localizacao_id, matricula.dependencia_adm_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 + 2 AS nivel_simulacao, matricula.localizacao_id, matricula.dependencia_adm_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 + AND matricula.dependencia_adm_id=div_estado_mod.dependencia_adm_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) + matricula.localizacao_id, matricula.dependencia_adm_id) SELECT * FROM nivel_sim1 UNION ALL diff --git a/matricula_por_localizacao.sql b/matricula_por_localizacao.sql index 5d455e8f0acc65214388b4533808be486a682bad..26465856dc675fbf30eb53a16541d90cea8d6030 100644 --- a/matricula_por_localizacao.sql +++ b/matricula_por_localizacao.sql @@ -25,44 +25,48 @@ CREATE TABLE matricula_por_localizacao AS ( WITH day_count AS - (SELECT count(*) as dia_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id + (SELECT count(*) as dia_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, + dependencia_adm_id FROM matricula WHERE tipo<=3 AND dependencia_adm_id < 4 AND ano_censo >= 2017 AND (turma_turno_id IN (1, 2, 99) OR turma_turno_id IS null) - GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id - ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id + GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id + ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id ), night_count AS - (SELECT count(*) as noite_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id + (SELECT count(*) as noite_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, + dependencia_adm_id FROM matricula WHERE tipo<=3 AND dependencia_adm_id < 4 AND ano_censo >= 2017 AND turma_turno_id = 3 - GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id - ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id + GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id + ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id ) SELECT matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.serie_ano_id, COALESCE(dia_total, 0) AS dia_total, - COALESCE(noite_total, 0) AS noite_total, matricula.localizacao_id + COALESCE(noite_total, 0) AS noite_total, matricula.localizacao_id, matricula.dependencia_adm_id FROM matricula LEFT JOIN day_count ON matricula.ano_censo=day_count.ano_censo AND matricula.estado_id=day_count.estado_id AND matricula.municipio_id=day_count.municipio_id AND matricula.serie_ano_id=day_count.serie_ano_id AND matricula.localizacao_id=day_count.localizacao_id + AND matricula.dependencia_adm_id=day_count.dependencia_adm_id LEFT JOIN night_count ON matricula.ano_censo=night_count.ano_censo AND matricula.estado_id=night_count.estado_id AND matricula.municipio_id=night_count.municipio_id AND matricula.serie_ano_id=night_count.serie_ano_id AND matricula.localizacao_id=night_count.localizacao_id + AND matricula.dependencia_adm_id=night_count.dependencia_adm_id WHERE matricula.ano_censo >= 2017 AND matricula.serie_ano_id IS NOT NULL AND matricula.tipo <= 3 AND matricula.dependencia_adm_id < 4 GROUP BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.serie_ano_id, dia_total, - noite_total, matricula.localizacao_id + noite_total, matricula.localizacao_id, matricula.dependencia_adm_id ); -- Create serie mod INSERT INTO matricula_por_localizacao(ano_censo, estado_id, municipio_id, serie_ano_id, dia_total, noite_total, - localizacao_id) + localizacao_id, dependencia_adm_id) SELECT ano_censo, estado_id, municipio_id, LEFT(serie_ano_id, 1) as serie, sum(dia_total), sum(noite_total), - localizacao_id + localizacao_id, dependencia_adm_id FROM matricula_por_localizacao -GROUP BY ano_censo, estado_id, municipio_id, serie, localizacao_id; \ No newline at end of file +GROUP BY ano_censo, estado_id, municipio_id, serie, localizacao_id, dependencia_adm_id; \ No newline at end of file