Database
[{"name":"John","rank":5},{"name":"John","rank":4},{"name":"John","rank":5},{"name":"James","rank":3},{"name":"Froggy","rank":5}]
Query
db.collection.aggregate([{$group:{_id:"$name",rankFiveCount:{$sum:{$cond:[{$eq:["$rank",5]},1,0]}},itemsCount:{$sum:1}}},{$set:{rankFivePercentage:{$round:{$multiply:[{$divide:["$rankFiveCount","$itemsCount"]},100]}}}},{$setWindowFields:{sortBy:{rankFivePercentage:-1},output:{rank:{$rank:{}},totalCount:{$count:{}}}}},{$project:{name:"$_id",_id:0,percetile:{$round:{$multiply:[{$divide:["$rank","$totalCount"]},100]}}}}])