diff --git a/src/libs/routes_v1/rateSchoolNew.js b/src/libs/routes_v1/rateSchoolNew.js
index a6ae0218aaa01e00cb695ac59a690a836a532d2c..237edfa1d5fa2d3033ded9b103452b5f01ba1e1b 100644
--- a/src/libs/routes_v1/rateSchoolNew.js
+++ b/src/libs/routes_v1/rateSchoolNew.js
@@ -308,20 +308,49 @@ rqf.addField({
     }
 });
 
-// The queries are matched and the total is calculated
-function matchQueries(attendsSchoolObj, populationObj) {
-    let match = [];
-
-    for (let i = 0; i < attendsSchoolObj.length; i++) {
-        let newObj = attendsSchoolObj[i];
-
-        newObj.total = (attendsSchoolObj[i].total / populationObj[i].total) * 100;
+/* 
+    The queries are matched and the total is calculated.
+    This function is necessary to match the results of the
+    2 queries with the right pair. In some queries, the result
+    doesn't exist in one of the 2, so, we need to run this algorithm
+    to match them right.
+*/
 
-        newObj.age_range_id = newObj.faixa_etaria;
-        delete newObj.faixa_etaria;
+function matchQueries(queryPartial, queryTotal) {
+    let match = [];
+    queryTotal.forEach((result) => {
+        let newObj = {};
+        let keys = Object.keys(result);
+        keys.forEach((key) => {
+            newObj[key] = result[key];
+        });
+        let index = keys.indexOf('total');
+        if(index > -1) keys.splice(index, 1);
+        let objMatch = null;
+
+        for(let i = 0; i < queryPartial.length; ++i) {
+            let partial = queryPartial[i];
+            let foundMatch = true;
+            for(let j = 0; j < keys.length; ++j) {
+                let key = keys[j];
+                if(partial[key] !== result[key]) {
+                    foundMatch = false;
+                    break;
+                }
+            }
+            if(foundMatch) {
+                objMatch = partial;
+                break;
+            }
+        }
 
-        match.push(newObj);
-    }
+        if(objMatch) {
+            newObj.denominator = result.total;
+            newObj.partial = objMatch.total;
+            newObj.total = (objMatch.total / result.total) * 100;
+            match.push(newObj);
+        }
+    });
 
     return match;
 }