Skip to content
Snippets Groups Projects
Commit 9f2e5c5c authored by jvfpw18's avatar jvfpw18
Browse files

Add filter adm_dependency to classroomCount

parent 43c60b54
No related branches found
No related tags found
1 merge request!7Docente por formacao, matricula por localizacao e transporte
......@@ -24,73 +24,79 @@ along with HOTMapper. If not, see <https://www.gnu.org/licenses/>.
CREATE TABLE indice_distribuicao_matriculas AS (
WITH div_estado AS
(SELECT count(serie_ano_id) AS total_estado, serie_ano_id, estado_id, ano_censo, localizacao_id
(SELECT count(serie_ano_id) AS total_estado, serie_ano_id, estado_id, ano_censo, localizacao_id,
dependencia_adm_id
FROM matricula
WHERE ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_id <=3
GROUP BY serie_ano_id, estado_id, ano_censo, localizacao_id),
GROUP BY serie_ano_id, estado_id, ano_censo, localizacao_id, dependencia_adm_id),
div_estado_mod AS
(SELECT count(serie_ano_id) AS total_estado_mod, cast(LEFT(serie_ano_id, 1) as integer) as serie_mod, estado_id,
ano_censo, localizacao_id
ano_censo, localizacao_id, dependencia_adm_id
FROM matricula
WHERE ano_censo >= 2017 AND tipo <= 3 AND dependencia_adm_id <= 3
GROUP BY serie_mod, estado_id, ano_censo, localizacao_id),
GROUP BY serie_mod, estado_id, ano_censo, localizacao_id, dependencia_adm_id),
div_brasil AS
(SELECT sum(total_estado) AS total_brasil, serie_ano_id, ano_censo, localizacao_id
(SELECT sum(total_estado) AS total_brasil, serie_ano_id, ano_censo, localizacao_id, dependencia_adm_id
FROM div_estado
GROUP BY serie_ano_id, ano_censo, localizacao_id),
GROUP BY serie_ano_id, ano_censo, localizacao_id, dependencia_adm_id),
div_brasil_mod AS
(SELECT sum(total_brasil) AS total_brasil_mod, cast(LEFT(serie_ano_id, 1) as integer) as serie_mod, ano_censo, localizacao_id
(SELECT sum(total_brasil) AS total_brasil_mod, cast(LEFT(serie_ano_id, 1) as integer) as serie_mod, ano_censo,
localizacao_id, dependencia_adm_id
FROM div_brasil
GROUP BY serie_mod, ano_censo, localizacao_id),
GROUP BY serie_mod, ano_censo, localizacao_id, dependencia_adm_id),
nivel_sim1 AS
(SELECT matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_brasil AS total_etapa,
cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, 1 AS nivel_simulacao,
matricula.localizacao_id
matricula.localizacao_id, matricula.dependencia_adm_id
FROM matricula JOIN div_brasil ON matricula.serie_ano_id=div_brasil.serie_ano_id
AND matricula.ano_censo=div_brasil.ano_censo
AND matricula.localizacao_id=div_brasil.localizacao_id
AND matricula.dependencia_adm_id=div_brasil.dependencia_adm_id
WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3
GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_etapa,
matricula.localizacao_id),
matricula.localizacao_id, matricula.dependencia_adm_id),
nivel_sim2 AS
(SELECT matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_estado AS total_etapa,
cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice, 2 AS nivel_simulacao,
matricula.localizacao_id
matricula.localizacao_id, matricula.dependencia_adm_id
FROM matricula JOIN div_estado ON matricula.serie_ano_id=div_estado.serie_ano_id
AND matricula.estado_id=div_estado.estado_id
AND matricula.ano_censo=div_estado.ano_censo
AND matricula.localizacao_id=div_estado.localizacao_id
AND matricula.dependencia_adm_id=div_estado.dependencia_adm_id
WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3
GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, matricula.serie_ano_id, total_etapa,
matricula.localizacao_id),
matricula.localizacao_id, matricula.dependencia_adm_id),
nivel_sim1_mod AS
(SELECT matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod as serie_ano_id,
total_brasil_mod AS total_etapa, cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice,
1 AS nivel_simulacao, matricula.localizacao_id
1 AS nivel_simulacao, matricula.localizacao_id, matricula.dependencia_adm_id
FROM matricula JOIN div_brasil_mod ON LEFT(matricula.serie_ano_id, 1)=div_brasil_mod.serie_mod
AND matricula.ano_censo=div_brasil_mod.ano_censo
AND matricula.localizacao_id=div_brasil_mod.localizacao_id
AND matricula.dependencia_adm_id=div_brasil_mod.dependencia_adm_id
WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3
GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod, total_etapa,
matricula.localizacao_id),
matricula.localizacao_id, matricula.dependencia_adm_id),
nivel_sim2_mod AS
(SELECT matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod as serie_ano_id,
total_estado_mod AS total_etapa, cast(count(matricula.serie_ano_id) AS double)/total_etapa AS indice,
2 AS nivel_simulacao, matricula.localizacao_id
2 AS nivel_simulacao, matricula.localizacao_id, matricula.dependencia_adm_id
FROM matricula JOIN div_estado_mod ON LEFT(matricula.serie_ano_id, 1)=div_estado_mod.serie_mod
AND matricula.estado_id=div_estado_mod.estado_id
AND matricula.ano_censo=div_estado_mod.ano_censo
AND matricula.localizacao_id=div_estado_mod.localizacao_id
AND matricula.dependencia_adm_id=div_estado_mod.dependencia_adm_id
WHERE matricula.ano_censo>=2017 AND tipo <= 3 AND dependencia_adm_priv <=3
GROUP BY matricula.ano_censo, matricula.estado_id, municipio_id, serie_mod, total_etapa,
matricula.localizacao_id)
matricula.localizacao_id, matricula.dependencia_adm_id)
SELECT * FROM nivel_sim1
UNION ALL
......
......@@ -25,44 +25,48 @@ CREATE TABLE matricula_por_localizacao AS (
WITH
day_count AS
(SELECT count(*) as dia_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id
(SELECT count(*) as dia_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id,
dependencia_adm_id
FROM matricula
WHERE tipo<=3 AND dependencia_adm_id < 4 AND ano_censo >= 2017 AND
(turma_turno_id IN (1, 2, 99) OR turma_turno_id IS null)
GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id
ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id
GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id
ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id
),
night_count AS
(SELECT count(*) as noite_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id
(SELECT count(*) as noite_total, ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id,
dependencia_adm_id
FROM matricula
WHERE tipo<=3 AND dependencia_adm_id < 4 AND ano_censo >= 2017 AND turma_turno_id = 3
GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id
ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id
GROUP BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id
ORDER BY ano_censo, estado_id, municipio_id, serie_ano_id, localizacao_id, dependencia_adm_id
)
SELECT matricula.ano_censo, matricula.estado_id, matricula.municipio_id,
matricula.serie_ano_id, COALESCE(dia_total, 0) AS dia_total,
COALESCE(noite_total, 0) AS noite_total, matricula.localizacao_id
COALESCE(noite_total, 0) AS noite_total, matricula.localizacao_id, matricula.dependencia_adm_id
FROM matricula
LEFT JOIN day_count ON matricula.ano_censo=day_count.ano_censo AND matricula.estado_id=day_count.estado_id
AND matricula.municipio_id=day_count.municipio_id AND matricula.serie_ano_id=day_count.serie_ano_id
AND matricula.localizacao_id=day_count.localizacao_id
AND matricula.dependencia_adm_id=day_count.dependencia_adm_id
LEFT JOIN night_count ON matricula.ano_censo=night_count.ano_censo AND matricula.estado_id=night_count.estado_id
AND matricula.municipio_id=night_count.municipio_id AND matricula.serie_ano_id=night_count.serie_ano_id
AND matricula.localizacao_id=night_count.localizacao_id
AND matricula.dependencia_adm_id=night_count.dependencia_adm_id
WHERE matricula.ano_censo >= 2017 AND matricula.serie_ano_id IS NOT NULL
AND matricula.tipo <= 3 AND matricula.dependencia_adm_id < 4
GROUP BY matricula.ano_censo, matricula.estado_id, matricula.municipio_id, matricula.serie_ano_id, dia_total,
noite_total, matricula.localizacao_id
noite_total, matricula.localizacao_id, matricula.dependencia_adm_id
);
-- Create serie mod
INSERT INTO
matricula_por_localizacao(ano_censo, estado_id, municipio_id, serie_ano_id, dia_total, noite_total,
localizacao_id)
localizacao_id, dependencia_adm_id)
SELECT
ano_censo, estado_id, municipio_id, LEFT(serie_ano_id, 1) as serie, sum(dia_total), sum(noite_total),
localizacao_id
localizacao_id, dependencia_adm_id
FROM matricula_por_localizacao
GROUP BY ano_censo, estado_id, municipio_id, serie, localizacao_id;
\ No newline at end of file
GROUP BY ano_censo, estado_id, municipio_id, serie, localizacao_id, dependencia_adm_id;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment