Skip to content

Instantly share code, notes, and snippets.

@novalagung
Created April 25, 2017 09:46
Show Gist options
  • Select an option

  • Save novalagung/b67bf1e37b8356d355ced0ba78e3e150 to your computer and use it in GitHub Desktop.

Select an option

Save novalagung/b67bf1e37b8356d355ced0ba78e3e150 to your computer and use it in GitHub Desktop.
var dataOriginal = db.getCollection('SummaryUtilization').find({
MonthYear: 62016
}).toArray()
var dataGroupedByMonthYearAndEmp = {}
dataOriginal.forEach(function (eachData) {
// ========= calculate percentage
eachData.Percentage = eachData.SumChargeable / (eachData.CoreHours - eachData.PublicHours)
if (!isFinite(eachData.Percentage) || isNaN(eachData.Percentage)) eachData.Percentage = 0
// ========= group data
var key = String(eachData.MonthYear) + " - " + String(eachData.EmpCode)
var rows = []
if (dataGroupedByMonthYearAndEmp.hasOwnProperty(key)) {
rows = dataGroupedByMonthYearAndEmp[key]
}
rows.push(eachData)
dataGroupedByMonthYearAndEmp[key] = rows
})
for (var key in dataGroupedByMonthYearAndEmp) {
var rows = dataGroupedByMonthYearAndEmp[key]
var sampleData = rows[0]
var percentagesWithCNUEquals1 = []
rows.forEach(function (eachRow) {
if (eachRow.C_n_u === 1) {
percentagesWithCNUEquals1.push(eachRow.Percentage)
}
})
if (percentagesWithCNUEquals1.length == 0) {
sampleData.Percentage = 0
} else if (percentagesWithCNUEquals1.length == 1) {
sampleData.Percentage = percentagesWithCNUEquals1[0]
} else {
sampleData.Percentage = percentagesWithCNUEquals1.reduce(function (d, e) { return d + e }, 0) / percentagesWithCNUEquals1.length
}
db.getCollection("EXAMPLE").save(sampleData)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment