From cfa8441497d2f6762c105836b847a852941128e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Victor=20Frans=20Pondaco=20Winandy?=
 <jvfpw18@inf.ufpr.br>
Date: Fri, 20 Sep 2019 10:16:50 -0300
Subject: [PATCH] Add docente_por_formacao

---
 docente_por_formacao.sql | 82 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 82 insertions(+)
 create mode 100644 docente_por_formacao.sql

diff --git a/docente_por_formacao.sql b/docente_por_formacao.sql
new file mode 100644
index 0000000..bcb97bf
--- /dev/null
+++ b/docente_por_formacao.sql
@@ -0,0 +1,82 @@
+/*
+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: docente, turma
+-- SimCAQ: tabela de docentes por formação --
+
+CREATE TABLE docente_por_formacao AS (
+
+WITH
+    docente_total AS
+        (SELECT COUNT(DISTINCT docente.id_docente) AS "total", docente.ano_censo AS ano_censo, estado.id AS estado_id,
+            municipio.id AS municipio_id, docente.dependencia_adm_id as dependencia_adm_id, '0' as tipo_formacao
+        FROM docente
+            INNER JOIN turma ON (docente.turma_id=turma.id AND docente.ano_censo=turma.ano_censo)
+            INNER JOIN estado ON (docente.escola_estado_id=estado.id)
+            INNER JOIN municipio ON (docente.escola_municipio_id=municipio.id)
+        WHERE ((docente.tipo_docente = 1 OR docente.tipo_docente = 5) AND (turma.tipo_turma_id <= 3))
+            AND (docente.ano_censo >= 2017) AND (docente.nivel_tipo_formacao IN (2, 3, 4, 5, 6, 7, 8)
+        GROUP BY docente.ano_censo, estado.nome, estado.id, municipio.nome, municipio.id, docente.dependencia_adm_id
+        ORDER BY docente.ano_censo ASC, estado.nome ASC, estado.id ASC, municipio.nome ASC, municipio.id ASC
+        ),
+    docente_medio AS
+        (SELECT COUNT(DISTINCT docente.id_docente) AS "total", docente.ano_censo AS ano_censo, estado.id AS estado_id,
+            municipio.id AS municipio_id, docente.dependencia_adm_id as dependencia_adm_id, '2' as tipo_formacao
+        FROM docente
+            INNER JOIN turma ON (docente.turma_id=turma.id AND docente.ano_censo=turma.ano_censo)
+            INNER JOIN estado ON (docente.escola_estado_id=estado.id)
+            INNER JOIN municipio ON (docente.escola_municipio_id=municipio.id)
+        WHERE ((docente.tipo_docente = 1 OR docente.tipo_docente = 5) AND (turma.tipo_turma_id <= 3))
+            AND (docente.ano_censo >= 2017) AND (docente.nivel_tipo_formacao IN (2, 3)
+        GROUP BY docente.ano_censo, estado.nome, estado.id, municipio.nome, municipio.id, docente.dependencia_adm_id
+        ORDER BY docente.ano_censo ASC, estado.nome ASC, estado.id ASC, municipio.nome ASC, municipio.id ASC
+        ),
+    docente_superior AS
+        (SELECT COUNT(DISTINCT docente.id_docente) AS "total", docente.ano_censo AS ano_censo, estado.id AS estado_id,
+            municipio.id AS municipio_id, docente.dependencia_adm_id as dependencia_adm_id, '4' as tipo_formacao
+        FROM docente
+            INNER JOIN turma ON (docente.turma_id=turma.id AND docente.ano_censo=turma.ano_censo)
+            INNER JOIN estado ON (docente.escola_estado_id=estado.id)
+            INNER JOIN municipio ON (docente.escola_municipio_id=municipio.id)
+        WHERE ((docente.tipo_docente = 1 OR docente.tipo_docente = 5) AND (turma.tipo_turma_id <= 3))
+            AND (docente.ano_censo >= 2017) AND (docente.nivel_tipo_formacao IN (4, 5)
+        GROUP BY docente.ano_censo, estado.nome, estado.id, municipio.nome, municipio.id, docente.dependencia_adm_id
+        ORDER BY docente.ano_censo ASC, estado.nome ASC, estado.id ASC, municipio.nome ASC, municipio.id ASC
+        ),
+    docente_especializacao_mestrado_doutorado AS
+        (SELECT COUNT(DISTINCT docente.id_docente) AS "total", docente.ano_censo AS ano_censo, estado.id AS estado_id,
+            municipio.id AS municipio_id, docente.dependencia_adm_id as dependencia_adm_id,
+            docente.nivel_tipo_formacao as tipo_formacao
+        FROM docente
+            INNER JOIN turma ON (docente.turma_id=turma.id AND docente.ano_censo=turma.ano_censo)
+            INNER JOIN estado ON (docente.escola_estado_id=estado.id)
+            INNER JOIN municipio ON (docente.escola_municipio_id=municipio.id)
+        WHERE ((docente.tipo_docente = 1 OR docente.tipo_docente = 5) AND (turma.tipo_turma_id <= 3))
+            AND (docente.ano_censo >= 2017) AND (docente.nivel_tipo_formacao IN (6, 7, 8)
+        GROUP BY docente.ano_censo, estado.nome, estado.id, municipio.nome, municipio.id, docente.dependencia_adm_id
+        ORDER BY docente.ano_censo ASC, estado.nome ASC, estado.id ASC, municipio.nome ASC, municipio.id ASC
+        )
+
+SELECT *
+FROM docente_total
+UNION ALL docente_medio
+UNION ALL docente_superior
+UNION ALL docente_especializacao_mestrado_doutorado;
+)
-- 
GitLab