diff --git a/projecao_matricula_por_dependencia.sql b/projecao_matricula_por_dependencia.sql new file mode 100644 index 0000000000000000000000000000000000000000..a5cc4e3e9d127afffc4497a2c22ee0d0f092ebd5 --- /dev/null +++ b/projecao_matricula_por_dependencia.sql @@ -0,0 +1,64 @@ +CREATE TABLE projecao_matricula_por_dependencia AS ( + +WITH urban_day AS + (SELECT count(*) as urbano_dia_total, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + FROM matricula + WHERE localizacao_id = 1 AND dependencia_adm_id IN (1,2,3) AND (turma_turno_id IN (1, 2, 4, 99) OR turma_turno_id IS null) AND + (tipo_atendimento_turma <= 2 OR tipo <= 3) + GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + ORDER BY ano_censo, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id), + + urban_night AS + (SELECT count(*) as urbano_noite_total, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + FROM matricula + WHERE localizacao_id = 1 AND dependencia_adm_id IN (1,2,3) AND turma_turno_id = 3 AND (tipo_atendimento_turma <= 2 OR tipo <= 3) + GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + ORDER BY ano_censo, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id), + + rural_day AS + (SELECT count(*) as rural_dia_total, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + FROM matricula + WHERE localizacao_id = 2 AND dependencia_adm_id IN (1,2,3) AND (turma_turno_id IN (1, 2, 4, 99) OR turma_turno_id IS null) AND + (tipo_atendimento_turma <= 2 OR tipo <= 3) + GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + ORDER BY ano_censo, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id), + + rural_night AS + (SELECT count(*) as rural_noite_total, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + FROM matricula + WHERE localizacao_id = 2 AND dependencia_adm_id IN (1,2,3) AND turma_turno_id = 3 AND (tipo_atendimento_turma <= 2 OR tipo <= 3) + GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id + ORDER BY ano_censo, ano_censo, estado_id, municipio_id, serie_ano_id, dependencia_adm_id) + +SELECT matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, + matricula.serie_ano_id AS etapa_ensino_escola_ano_id, COALESCE(urbano_dia_total, 0) AS urbano_dia_total, + COALESCE(rural_dia_total, 0) AS rural_dia_total, COALESCE(urbano_noite_total, 0) AS urbano_noite_total, + COALESCE(rural_noite_total, 0) AS rural_noite_total +FROM matricula + LEFT JOIN urban_day ON matricula.ano_censo=urban_day.ano_censo AND matricula.estado_id=urban_day.estado_id + AND matricula.municipio_id=urban_day.municipio_id AND matricula.serie_ano_id=urban_day.serie_ano_id AND + urban_day.dependencia_adm_id=matricula.dependencia_adm_id + LEFT JOIN rural_day ON matricula.ano_censo=rural_day.ano_censo AND matricula.estado_id=rural_day.estado_id + AND matricula.municipio_id=rural_day.municipio_id AND matricula.serie_ano_id=rural_day.serie_ano_id AND + rural_day.dependencia_adm_id=matricula.dependencia_adm_id + LEFT JOIN rural_night ON matricula.ano_censo=rural_night.ano_censo AND matricula.estado_id=rural_night.estado_id + AND matricula.municipio_id=rural_night.municipio_id AND matricula.serie_ano_id=rural_night.serie_ano_id AND + rural_night.dependencia_adm_id=matricula.dependencia_adm_id + LEFT JOIN urban_night ON matricula.ano_censo=urban_night.ano_censo AND matricula.estado_id=urban_night.estado_id + AND matricula.municipio_id=urban_night.municipio_id AND matricula.serie_ano_id=urban_night.serie_ano_id AND + urban_night.dependencia_adm_id=matricula.dependencia_adm_id +WHERE matricula.dependencia_adm_id IN (1, 2, 3) AND matricula.ano_censo >= 2018 AND matricula.serie_ano_id IS NOT NULL +GROUP BY + matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id, urbano_dia_total, + rural_dia_total, urbano_noite_total, rural_noite_total +ORDER BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id +); + +INSERT INTO + projecao_matricula_por_dependencia(ano_censo, estado_id, municipio_id, dependencia_adm_id, etapa_ensino_escola_ano_id, urbano_dia_total, rural_dia_total, + urbano_noite_total, rural_noite_total) +SELECT + ano_censo, estado_id, municipio_id, dependencia_adm_id, LEFT(etapa_ensino_escola_ano_id, 1) as serie, sum(urbano_dia_total), + sum(rural_dia_total), sum(urbano_noite_total), sum(rural_noite_total) +FROM projecao_matricula_por_dependencia +GROUP BY ano_censo, estado_id, municipio_id, dependencia_adm_id, serie;