From 9554c18b151551ea708612fdd24ed4fa5dc54f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor=20Risso?= <joaovictor.risso@gmail.com> Date: Fri, 28 Oct 2016 11:01:36 -0200 Subject: [PATCH] Fix location type in school queries - Change id_localizacao to tipo_localizacao when querying escola (school) table - Add missing condition for querying escola table, which is tuples that have id_tipo_turma = 0, according to the use case. --- src/libs/routes/location.js | 119 +++++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 43 deletions(-) diff --git a/src/libs/routes/location.js b/src/libs/routes/location.js index a4289272..241fdcac 100644 --- a/src/libs/routes/location.js +++ b/src/libs/routes/location.js @@ -15,14 +15,21 @@ const response = require(`${libs}/middlewares/response`); const locationApp = express(); function locationIdToStr(locationId) { - let locationStr = 'Todas'; + let locationStr = 'Total'; switch(locationId) { case 1: - locationStr = 'Urbana'; - break; + locationStr = 'Urbana'; break; case 2: - locationStr = 'Rural'; - break; + locationStr = 'Rural'; break; + case 3: + locationStr = 'Ãrea de assentamento'; break; + case 4: + locationStr = 'Terra indÃgena'; break; + case 5: + locationStr = 'Ãrea remanescente de quilombos'; break; + case 6: + locationStr = 'Unidade de uso sustentável'; break; + } return locationStr; } @@ -33,7 +40,7 @@ locationApp.get('/sociodemographic', (req, res, next) => { .from('ibge_populacao'); const populationQry = squel.select() - .field('\'Brasil\'', 'location') + .field('\'Brasil\'', 'name') .field('SUM(populacao)', 'population') .field('ibge_populacao.ano_censo') .from('ibge_populacao') @@ -45,7 +52,7 @@ locationApp.get('/sociodemographic', (req, res, next) => { .from('ibge_pib'); const pibQry = squel.select() - .field('\'Brasil\'', 'location') + .field('\'Brasil\'', 'name') .field('AVG(ibge_pib.pib_per_capita)', 'gdp_per_capita') .field('ibge_pib.ano_censo') .from('ibge_pib') @@ -57,7 +64,7 @@ locationApp.get('/sociodemographic', (req, res, next) => { .from('adh_idh'); const idhQry = squel.select() - .field('\'Brasil\'', 'location') + .field('\'Brasil\'', 'name') .field('AVG(idhm)', 'idhm') .field('adh_idh.ano_censo') .from('adh_idh') @@ -69,7 +76,7 @@ locationApp.get('/sociodemographic', (req, res, next) => { .from('adh_analfabetismo'); const analfabQry = squel.select() - .field('\'Brasil\'', 'location') + .field('\'Brasil\'', 'name') .field('AVG(t_analf15m)', 'analfabetism') .field('adh_analfabetismo.ano_censo') .from('adh_analfabetismo') @@ -81,7 +88,7 @@ locationApp.get('/sociodemographic', (req, res, next) => { .from('adh_gini'); const giniQry = squel.select() - .field('\'Brasil\'', 'location') + .field('\'Brasil\'', 'name') .field('AVG(gini)', 'gini') .field('adh_gini.ano_censo') .from('adh_gini') @@ -114,7 +121,7 @@ locationApp.get('/sociodemographic/region/:id', (req, res, next) => { .from('ibge_populacao'); const populationQry = squel.select() - .field('regiao.nome', 'location') + .field('regiao.nome', 'name') .field('SUM(populacao)', 'population') .field('ano_censo', 'census_year') .from('ibge_populacao') @@ -135,7 +142,7 @@ locationApp.get('/sociodemographic/region/:id', (req, res, next) => { .from('ibge_pib'); const pibQry = squel.select() - .field('regiao.nome', 'location') + .field('regiao.nome', 'name') .field('AVG(ibge_pib.pib_per_capita)', 'gdp_per_capita') .field('ano_censo', 'census_year') .from('ibge_pib') @@ -156,7 +163,7 @@ locationApp.get('/sociodemographic/region/:id', (req, res, next) => { .from('adh_idh'); const idhQry = squel.select() - .field('regiao.nome', 'location') + .field('regiao.nome', 'name') .field('AVG(idhm)', 'idhm') .field('ano_censo', 'census_year') .from('adh_idh') @@ -177,7 +184,7 @@ locationApp.get('/sociodemographic/region/:id', (req, res, next) => { .from('adh_analfabetismo'); const analfabQry = squel.select() - .field('regiao.nome', 'location') + .field('regiao.nome', 'name') .field('AVG(t_analf15m)', 'analfabetism') .field('ano_censo', 'census_year') .from('adh_analfabetismo') @@ -198,7 +205,7 @@ locationApp.get('/sociodemographic/region/:id', (req, res, next) => { .from('adh_gini'); const giniQry = squel.select() - .field('regiao.nome', 'location') + .field('regiao.nome', 'name') .field('AVG(gini)', 'gini') .field('ano_censo', 'census_year') .from('adh_gini') @@ -240,7 +247,7 @@ locationApp.get('/sociodemographic/state/:id', (req, res, next) => { .from('ibge_populacao'); // load all cities by state and compute the sociodemographic and educational information const populationQry = squel.select() - .field('estado.nome', 'location') + .field('estado.nome', 'name') .field('SUM(populacao)', 'population') .field('ibge_populacao.ano_censo', 'census_year') .from('ibge_populacao') @@ -259,7 +266,7 @@ locationApp.get('/sociodemographic/state/:id', (req, res, next) => { .from('ibge_pib'); const pibQry = squel.select() - .field('estado.nome', 'location') + .field('estado.nome', 'name') .field('AVG(ibge_pib.pib_per_capita)', 'gdp_per_capita') .field('ibge_pib.ano_censo', 'census_year') .from('ibge_pib') @@ -278,7 +285,7 @@ locationApp.get('/sociodemographic/state/:id', (req, res, next) => { .from('adh_idh'); const idhQry = squel.select() - .field('estado.nome', 'location') + .field('estado.nome', 'name') .field('AVG(idhm)', 'idhm') .field('adh_idh.ano_censo', 'census_year') .from('adh_idh') @@ -297,7 +304,7 @@ locationApp.get('/sociodemographic/state/:id', (req, res, next) => { .from('adh_analfabetismo'); const analfabQry = squel.select() - .field('estado.nome', 'location') + .field('estado.nome', 'name') .field('AVG(t_analf15m)', 'analfabetism') .field('adh_analfabetismo.ano_censo', 'census_year') .from('adh_analfabetismo') @@ -316,7 +323,7 @@ locationApp.get('/sociodemographic/state/:id', (req, res, next) => { .from('adh_gini'); const giniQry = squel.select() - .field('estado.nome', 'location') + .field('estado.nome', 'name') .field('AVG(gini)', 'gini') .field('adh_gini.ano_censo', 'census_year') .from('adh_gini') @@ -356,7 +363,7 @@ locationApp.get('/sociodemographic/city/:id', (req, res, next) => { .from('ibge_populacao'); // load all cities by state and compute the sociodemographic and educational information const populationQry = squel.select() - .field('municipio.nome', 'location') + .field('municipio.nome', 'name') .field('SUM(populacao)', 'population') .field('ibge_populacao.ano_censo', 'census_year') .from('ibge_populacao') @@ -373,7 +380,7 @@ locationApp.get('/sociodemographic/city/:id', (req, res, next) => { .from('ibge_pib'); const pibQry = squel.select() - .field('municipio.nome', 'location') + .field('municipio.nome', 'name') .field('AVG(ibge_pib.pib_per_capita)', 'gdp_per_capita') .field('ibge_pib.ano_censo', 'census_year') .from('ibge_pib') @@ -390,7 +397,7 @@ locationApp.get('/sociodemographic/city/:id', (req, res, next) => { .from('adh_idh'); const idhQry = squel.select() - .field('municipio.nome', 'location') + .field('municipio.nome', 'name') .field('AVG(idhm)', 'idhm') .field('adh_idh.ano_censo', 'census_year') .from('adh_idh') @@ -407,7 +414,7 @@ locationApp.get('/sociodemographic/city/:id', (req, res, next) => { .from('adh_analfabetismo'); const analfabQry = squel.select() - .field('municipio.nome', 'location') + .field('municipio.nome', 'name') .field('AVG(t_analf15m)', 'analfabetism') .field('adh_analfabetismo.ano_censo', 'census_year') .from('adh_analfabetismo') @@ -424,7 +431,7 @@ locationApp.get('/sociodemographic/city/:id', (req, res, next) => { .from('adh_gini'); const giniQry = squel.select() - .field('municipio.nome', 'location') + .field('municipio.nome', 'name') .field('AVG(gini)', 'gini') .field('adh_gini.ano_censo', 'census_year') .from('adh_gini') @@ -461,17 +468,25 @@ locationApp.get('/educational', (req, res, next) => { .toString(); const totalSchoolsQry = squel.select() + .field('\'Brasil\'', 'name') .field('0', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') - .where(`escola.ano_censo IN (${censusYearQry})`); + .where(`escola.ano_censo IN (${censusYearQry})`) + .where('escola.id_tipo_turma = 0') + .group('escola.ano_censo'); const schoolsPerLocationQry = squel.select() - .field('escola.id_localizacao', 'location') + .field('\'Brasil\'', 'name') + .field('escola.tipo_localizacao', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .where(`escola.ano_censo IN (${censusYearQry})`) - .group('escola.id_localizacao'); + .where('escola.id_tipo_turma = 0') + .group('escola.tipo_localizacao') + .group('escola.ano_censo'); const queries = [totalSchoolsQry, schoolsPerLocationQry].map((qry) => { return sqlQuery(qry.toString()); @@ -503,9 +518,10 @@ locationApp.get('/educational/region/:id', (req, res, next) => { .toString(); const totalSchoolsQry = squel.select() - .field('regiao.nome') + .field('regiao.nome', 'name') .field('0', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .from('estado') .from('regiao') @@ -513,12 +529,15 @@ locationApp.get('/educational/region/:id', (req, res, next) => { .where('estado.fk_regiao_id = regiao.pk_regiao_id') .where(`regiao.pk_regiao_id = ${regionId}`) .where(`escola.ano_censo IN (${censusYearQry})`) - .group('regiao.nome'); + .where('escola.id_tipo_turma = 0') + .group('regiao.nome') + .group('escola.ano_censo'); const schoolsPerLocationQry = squel.select() - .field('regiao.nome') - .field('escola.id_localizacao', 'location') + .field('regiao.nome', 'name') + .field('escola.tipo_localizacao', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .from('estado') .from('regiao') @@ -526,8 +545,10 @@ locationApp.get('/educational/region/:id', (req, res, next) => { .where('estado.fk_regiao_id = regiao.pk_regiao_id') .where(`regiao.pk_regiao_id = ${regionId}`) .where(`escola.ano_censo IN (${censusYearQry})`) + .where('escola.id_tipo_turma = 0') .group('regiao.nome') - .group('escola.id_localizacao'); + .group('escola.tipo_localizacao') + .group('escola.ano_censo'); const queries = [totalSchoolsQry, schoolsPerLocationQry].map((qry) => { return sqlQuery(qry.toString()); @@ -559,27 +580,33 @@ locationApp.get('/educational/state/:id', (req, res, next) => { .toString(); const totalSchoolsQry = squel.select() - .field('estado.nome') + .field('estado.nome', 'name') .field('0', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .from('estado') .where('escola.fk_estado_id = estado.pk_estado_id') .where(`escola.fk_estado_id = ${stateId}`) .where(`escola.ano_censo IN (${censusYearQry})`) - .group('estado.nome'); + .where('escola.id_tipo_turma = 0') + .group('estado.nome') + .group('escola.ano_censo'); const schoolsPerLocationQry = squel.select() - .field('estado.nome') - .field('escola.id_localizacao', 'location') + .field('estado.nome', 'name') + .field('escola.tipo_localizacao', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .from('estado') .where('escola.fk_estado_id = estado.pk_estado_id') .where(`escola.fk_estado_id = ${stateId}`) .where(`escola.ano_censo IN (${censusYearQry})`) + .where('escola.id_tipo_turma = 0') .group('estado.nome') - .group('escola.id_localizacao'); + .group('escola.tipo_localizacao') + .group('escola.ano_censo'); const queries = [totalSchoolsQry, schoolsPerLocationQry].map((qry) => { return sqlQuery(qry.toString()); @@ -611,27 +638,33 @@ locationApp.get('/educational/city/:id', (req, res, next) => { .toString(); const totalSchoolsQry = squel.select() - .field('municipio.nome') + .field('municipio.nome', 'name') .field('0', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .from('municipio') .where('escola.fk_municipio_id = municipio.pk_cod_ibge') .where(`escola.fk_municipio_id = ${cityId}`) .where(`escola.ano_censo IN (${censusYearQry})`) - .group('municipio.nome'); + .where('escola.id_tipo_turma = 0') + .group('municipio.nome') + .group('escola.ano_censo'); const schoolsPerLocationQry = squel.select() - .field('municipio.nome') - .field('escola.id_localizacao', 'location') + .field('municipio.nome', 'name') + .field('escola.tipo_localizacao', 'location') .field('COUNT(DISTINCT(escola.cod_entidade))', 'total') + .field('escola.ano_censo', 'census_year') .from('escola') .from('municipio') .where('escola.fk_municipio_id = municipio.pk_cod_ibge') .where(`escola.fk_municipio_id = ${cityId}`) .where(`escola.ano_censo IN (${censusYearQry})`) + .where('escola.id_tipo_turma = 0') .group('municipio.nome') - .group('escola.id_localizacao'); + .group('escola.tipo_localizacao') + .group('escola.ano_censo'); const queries = [totalSchoolsQry, schoolsPerLocationQry].map((qry) => { return sqlQuery(qry.toString()); -- GitLab