I have a JSON data and I need to do group by and sum the data. Let's say I have a json object which looks like this:
var dataString='[{"Company":"ABC","Focus":"Operate","Completed":"50","Remaining":"25"},{"Company":"ABC","Focus":"Operate","Completed":"20","Remaining":"50"},{"Company":"DEF","Focus":"Optimize","Completed":"100","Remaining":"75"},{"Company":"XYZ","Focus":"Innovate","Completed":"100","Remaining":"75"},{"Company":"ABC","Focus":"Improve","Completed":"50","Remaining":"50"},{"Company":"ABC","Focus":"Optimize","Completed":"50","Remaining":"25"},{"Company":"DEF","Focus":"Operate","Completed":"50","Remaining":"25"},{"Company":"ABC","Focus":"Improve","Completed":"50","Remaining":"25"},{"Company":"XYZ","Focus":"Operate","Completed":"50","Remaining":"25"},{"Company":"XYZ","Focus":"Operate","Completed":"50","Remaining":"25"},{"Company":"XYZ","Focus":"Optimize","Completed":"20","Remaining":"50"}]';
output :: Array inside an array, first array should contain company and inside one more array which will contain my focus area sum of completed and remaining data.
Company:
1. ABC --Focus -- 1.Operate -- Completed :70 ,Remaining:75
2.Improve -- Completed:100 ,Remaining:75
3.Optimize -- Completed:50 ,Remaining:25
2. DEF--Focus-- 1.Operate -- Completed:50 ,Remaining:25
2.Optimize -- Completed:100 ,Remaining:75
3. XYZ--Focus-- 1.Innovate -- Completed:100 ,Remaining:75
2.Operate -- Completed:100 ,Remaining:50
3.Optimize -- Completed:20 ,Remaining:50
I have tried below query to achieve this :
var resultxyz = Enumerable.From(dataString).GroupBy("$.Company", null,
function (key, g) {
var resultxyz = {
z: key,
totalCompleted: g.Sum("$.Completed"),
totalRemaining: g.Sum("$.Remaining")
}
return resultxyz ;
}).ToArray();
But this is grouping only on Company I have to do on focus also. Any idea or suggestion would be great help.