From a98d1ac004ddffad18d50286282cbc401e56f32d Mon Sep 17 00:00:00 2001
From: Fernando Erd <fcerd@inf.ufpr.br>
Date: Fri, 19 Feb 2021 10:52:11 -0300
Subject: [PATCH] Add enrollment projection by region

---
 projecao_matricula_regiao_1.sql | 85 +++++++++++++++++++++++++++++++++
 projecao_matricula_regiao_2.sql | 85 +++++++++++++++++++++++++++++++++
 projecao_matricula_regiao_3.sql | 85 +++++++++++++++++++++++++++++++++
 projecao_matricula_regiao_4.sql | 85 +++++++++++++++++++++++++++++++++
 projecao_matricula_regiao_5.sql | 85 +++++++++++++++++++++++++++++++++
 5 files changed, 425 insertions(+)
 create mode 100644 projecao_matricula_regiao_1.sql
 create mode 100644 projecao_matricula_regiao_2.sql
 create mode 100644 projecao_matricula_regiao_3.sql
 create mode 100644 projecao_matricula_regiao_4.sql
 create mode 100644 projecao_matricula_regiao_5.sql

diff --git a/projecao_matricula_regiao_1.sql b/projecao_matricula_regiao_1.sql
new file mode 100644
index 0000000..ecd96aa
--- /dev/null
+++ b/projecao_matricula_regiao_1.sql
@@ -0,0 +1,85 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of HOTMapper.
+
+HOTMapper is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+HOTMapper is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with HOTMapper.  If not, see <https://www.gnu.org/licenses/>.
+*/
+
+-- depends: matricula 2017+
+-- SimCAQ: tabela de projeção de matrículas --
+
+CREATE TABLE projecao_matricula_regiao_1 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) and (regiao_id = 1)
+        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) and (regiao_id=1)
+        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) and (regiao_id=1)
+        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) and (regiao_id=1)
+        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
+    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
+    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
+    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
+WHERE (matricula.regiao_id=1)
+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
+HAVING matricula.ano_censo >= 2018 AND etapa_ensino_escola_ano_id IS NOT NULL
+ORDER BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id
+);
+
+-- Create serie mod
+INSERT INTO
+    projecao_matricula_regiao_1(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_regiao_1
+GROUP BY ano_censo, estado_id, municipio_id, dependencia_adm_id, serie;
diff --git a/projecao_matricula_regiao_2.sql b/projecao_matricula_regiao_2.sql
new file mode 100644
index 0000000..0feba2c
--- /dev/null
+++ b/projecao_matricula_regiao_2.sql
@@ -0,0 +1,85 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of HOTMapper.
+
+HOTMapper is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+HOTMapper is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with HOTMapper.  If not, see <https://www.gnu.org/licenses/>.
+*/
+
+-- depends: matricula 2017+
+-- SimCAQ: tabela de projeção de matrículas --
+
+CREATE TABLE projecao_matricula_regiao_2 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) and (regiao_id = 2)
+        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) and (regiao_id=2)
+        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) and (regiao_id=2)
+        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) and (regiao_id=2)
+        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
+    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
+    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
+    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
+WHERE (matricula.regiao_id=2)
+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
+HAVING matricula.ano_censo >= 2018 AND etapa_ensino_escola_ano_id IS NOT NULL
+ORDER BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id
+);
+
+-- Create serie mod
+INSERT INTO
+    projecao_matricula_regiao_2(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_regiao_2
+GROUP BY ano_censo, estado_id, municipio_id, dependencia_adm_id, serie;
diff --git a/projecao_matricula_regiao_3.sql b/projecao_matricula_regiao_3.sql
new file mode 100644
index 0000000..96789ca
--- /dev/null
+++ b/projecao_matricula_regiao_3.sql
@@ -0,0 +1,85 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of HOTMapper.
+
+HOTMapper is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+HOTMapper is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with HOTMapper.  If not, see <https://www.gnu.org/licenses/>.
+*/
+
+-- depends: matricula 2017+
+-- SimCAQ: tabela de projeção de matrículas --
+
+CREATE TABLE projecao_matricula_regiao_3 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) and (regiao_id = 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) and (regiao_id=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) and (regiao_id=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) and (regiao_id=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
+    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
+    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
+    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
+WHERE (matricula.regiao_id=3)
+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
+HAVING matricula.ano_censo >= 2018 AND etapa_ensino_escola_ano_id IS NOT NULL
+ORDER BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id
+);
+
+-- Create serie mod
+INSERT INTO
+    projecao_matricula_regiao_3(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_regiao_3
+GROUP BY ano_censo, estado_id, municipio_id, dependencia_adm_id, serie;
diff --git a/projecao_matricula_regiao_4.sql b/projecao_matricula_regiao_4.sql
new file mode 100644
index 0000000..aab18fd
--- /dev/null
+++ b/projecao_matricula_regiao_4.sql
@@ -0,0 +1,85 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of HOTMapper.
+
+HOTMapper is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+HOTMapper is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with HOTMapper.  If not, see <https://www.gnu.org/licenses/>.
+*/
+
+-- depends: matricula 2017+
+-- SimCAQ: tabela de projeção de matrículas --
+
+CREATE TABLE projecao_matricula_regiao_4 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) and (regiao_id = 4)
+        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) and (regiao_id=4)
+        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) and (regiao_id=4)
+        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) and (regiao_id=4)
+        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
+    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
+    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
+    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
+WHERE (matricula.regiao_id=4)
+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
+HAVING matricula.ano_censo >= 2018 AND etapa_ensino_escola_ano_id IS NOT NULL
+ORDER BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id
+);
+
+-- Create serie mod
+INSERT INTO
+    projecao_matricula_regiao_4(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_regiao_4
+GROUP BY ano_censo, estado_id, municipio_id, dependencia_adm_id, serie;
diff --git a/projecao_matricula_regiao_5.sql b/projecao_matricula_regiao_5.sql
new file mode 100644
index 0000000..cabe803
--- /dev/null
+++ b/projecao_matricula_regiao_5.sql
@@ -0,0 +1,85 @@
+/*
+Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
+Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+
+This file is part of HOTMapper.
+
+HOTMapper is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+HOTMapper is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with HOTMapper.  If not, see <https://www.gnu.org/licenses/>.
+*/
+
+-- depends: matricula 2017+
+-- SimCAQ: tabela de projeção de matrículas --
+
+CREATE TABLE projecao_matricula_regiao_5 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) and (regiao_id = 5)
+        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) and (regiao_id=5)
+        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) and (regiao_id=5)
+        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) and (regiao_id=5)
+        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
+    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
+    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
+    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
+WHERE (matricula.regiao_id=5)
+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
+HAVING matricula.ano_censo >= 2018 AND etapa_ensino_escola_ano_id IS NOT NULL
+ORDER BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.dependencia_adm_id, etapa_ensino_escola_ano_id
+);
+
+-- Create serie mod
+INSERT INTO
+    projecao_matricula_regiao_5(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_regiao_5
+GROUP BY ano_censo, estado_id, municipio_id, dependencia_adm_id, serie;
-- 
GitLab