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;