diff --git a/src/libs/routes/location.js b/src/libs/routes/location.js
index 68ca03be1621b295e0ef42343f8b57af3c6b3b07..b4a252d8d8f5b50e5f8c5166297de94a541df1f3 100644
--- a/src/libs/routes/location.js
+++ b/src/libs/routes/location.js
@@ -45,43 +45,43 @@ function schoolYearIdToStr(schoolYearId)
             schoolYearStr = 'Pré-escola';
             break;
         case 31:
-            schoolYearStr = 'EF-AI 1 Ano';
+            schoolYearStr = '1 Ano';
             break;
         case 32:
-            schoolYearStr = 'EF-AI 2 Ano - 1 Serie';
+            schoolYearStr = '2 Ano - 1 Serie';
             break;
         case 33:
-            schoolYearStr = 'EF-AI 3 Ano - 2 Serie';
+            schoolYearStr = '3 Ano - 2 Serie';
             break;
         case 34:
-            schoolYearStr = 'EF-AI 4 Ano - 3 Serie';
+            schoolYearStr = '4 Ano - 3 Serie';
             break;
         case 35:
-            schoolYearStr = 'EF-AI 5 Ano - 4 Serie';
+            schoolYearStr = '5 Ano - 4 Serie';
             break;
         case 41:
-            schoolYearStr = 'EF-AF 6 Ano - 5 Serie';
+            schoolYearStr = '6 Ano - 5 Serie';
             break;
         case 42:
-            schoolYearStr = 'EF-AF 7 Ano - 6 Serie';
+            schoolYearStr = '7 Ano - 6 Serie';
             break;
         case 43:
-            schoolYearStr = 'EF-AF 8 Ano - 7 Serie';
+            schoolYearStr = '8 Ano - 7 Serie';
             break;
         case 44:
-            schoolYearStr = 'EF-AF 9 Ano - 8 Serie';
+            schoolYearStr = '9 Ano - 8 Serie';
             break;
         case 51:
-            schoolYearStr = 'EM 1 Série';
+            schoolYearStr = '1 Ano'; // equivalent to 'EM 1 Série'
             break;
         case 52:
-            schoolYearStr = 'EM 2 Série';
+            schoolYearStr = '2 Ano'; // equivalent to 'EM 2 Série'
             break;
         case 53:
-            schoolYearStr = 'EM 3 Série';
+            schoolYearStr = '3 Ano'; // equivalent to 'EM 3 Série'
             break;
         case 54:
-            schoolYearStr = 'EM 4 Série';
+            schoolYearStr = '4 Ano'; // equivalent to 'EM 4 Série'
             break;
         case 61:
             schoolYearStr = 'EJA AI';
@@ -987,8 +987,11 @@ locationApp.get('/educational/city/:id', (req, res, next) => {
     });
 }, response('location'));
 
-/* TODO: fix response format to nest objects by year
-locationApp.get('/educational/per_year', (req, res, next) => {
+locationApp.get('/educational/school_level', (req, res, next) => {
+    const enrollmentsPerSchoolLevelYearQry = squel.select()
+        .field('MAX(turma.ano_censo)', 'census_year')
+        .from('turma');
+
     const enrollmentsPerSchoolLevelQry = squel.select()
         .field('COALESCE(SUM(turma.num_matriculas), 0)', 'total')
         .field('turma.ano_censo', 'census_year')
@@ -996,6 +999,7 @@ locationApp.get('/educational/per_year', (req, res, next) => {
         .field('etapa_ensino.desc_etapa', 'school_level')
         .from('turma')
         .from('etapa_ensino')
+        .where(`turma.ano_censo IN (${enrollmentsPerSchoolLevelYearQry.toString()})`)
         .where('turma.fk_etapa_ensino_id = etapa_ensino.pk_etapa_ensino_id')
         .where('turma.fk_tipo_turma_id <= 3')
         .group('etapa_ensino.desc_etapa')
@@ -1005,24 +1009,40 @@ locationApp.get('/educational/per_year', (req, res, next) => {
         .order('turma.serie_ano')
         .order('turma.ano_censo');
 
-    const queryLabels = [ "enrollment_per_school_level" ];
-    const querySet = [ enrollmentsPerSchoolLevelQry ];
+    const queryLabels = [ 'enrollment_per_school_level', 'enrollment_census_year' ];
+    const querySet = [ enrollmentsPerSchoolLevelQry, enrollmentsPerSchoolLevelYearQry ];
     // wait until all queries finish or one of them fail
-    Promise.all(dbExecAll(querySet)).then((queryResults) => {
+    Promise.all(dbExecAll(querySet, enrollmentsPerSchoolLevelYearQry)).then((queryResults) => {
         const result = queryResults[0];
-        let response = {};
+        const censusYear = queryResults[1][0]['census_year'];
+
+        let school_levels = {};
         for(let i = 0; i < result.length; ++i) {
-            log.debug(result[i]);
             const school_year  = schoolYearIdToStr(result[i].school_year);
             const school_level = result[i].school_level;
             const census_year = result[i].census_year;
-            if (typeof response[school_level] === "undefined") {
-                response[school_level] = {};
+            if (typeof school_levels[school_level] === 'undefined') {
+                school_levels[school_level] = {};
             }
-            if (typeof response[school_level][school_year] === "undefined") {
-                response[school_level][school_year] = {};
+            school_levels[school_level][school_year] = parseInt(result[i].total, 10);
+        }
+
+        let response = [];
+        for(let level in school_levels) {
+            if (school_levels.hasOwnProperty(level)) {
+                let sclevel = {};
+                sclevel["degree"] = level;
+                sclevel["census_year"] = parseInt(censusYear, 10);
+                sclevel["table"] = [];
+                for(let school_year in school_levels[level]) {
+                    if (school_levels[level].hasOwnProperty(school_year)) {
+                        let enrollment = { 'title' : school_year,
+                                           'value' : school_levels[level][school_year] };
+                        sclevel["table"].push(enrollment);
+                    }
+                }
+                response.push(sclevel);
             }
-            response[school_level][school_year] = parseInt(result[i].total, 10);
         }
         req.result = response;
         next();
@@ -1031,6 +1051,5 @@ locationApp.get('/educational/per_year', (req, res, next) => {
         next(error);
     });
 }, response('location'));
-*/
 
 module.exports = locationApp;
diff --git a/src/test/location.js b/src/test/location.js
index 7d8f202e7efff24c8474fed39f6de94725c6b53c..06924a3b8b1aba3c5e2c76df8000c241c7e69467 100644
--- a/src/test/location.js
+++ b/src/test/location.js
@@ -446,4 +446,33 @@ describe('test location', () => {
                 done();
             });
     }).timeout(testTimeout);
+
+    it('should return the correct format of enrollments per school level', (done) => {
+        chai.request(server)
+            .get('/api/v1/location/educational/school_level')
+            .end((err, res) => {
+                res.should.have.status(200);
+                // test response format
+                res.should.be.json;
+                // test for result attribute in the response
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                // test response attributes for school
+                res.body.result.forEach((row) => {
+                    row.should.be.a('object');
+                    row.should.have.property('degree');
+                    row.should.have.property('census_year');
+                    row.should.have.property('table');
+                    row.table.should.be.a('array');
+                    row.table.forEach((tableRow) => {
+                        tableRow.should.be.a('object');
+                        tableRow.should.have.property('title');
+                        tableRow.should.have.property('value');
+                        tableRow.title.should.be.a('String');
+                        tableRow.value.should.be.a('Number');
+                    });
+                });
+                done();
+            });
+    }).timeout(testTimeout);
 });