diff --git a/docente_por_formacao.sql b/docente_por_formacao.sql new file mode 100644 index 0000000000000000000000000000000000000000..bcb97bf696fe36b0b92086087232ff1c20686426 --- /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; +)