MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie berechnet man das Perzentil?

Es scheint immer noch keine native Methode zur Berechnung von Perzentilen zu geben, aber durch die Kombination einiger Aggregatoperatoren können Sie dasselbe Ergebnis erzielen.

db.items.aggregate([
        {'$group': {
            '_id': {
                'league': '$league',
                'base': '$base',
                'type': '$type'
            },
            'value': {'$push': '$chaosequiv'}
        }},
        {'$unwind': '$value'},
        {'$sort': {'value': 1}},
        {'$group': {'_id': '$_id', 'value': {'$push': '$value'}}},
        {'$project': {
            '_id': 1,
            'value': {'$arrayElemAt': ['$value', {'$floor': {'$multiply': [0.25, {'$size': '$value'}]}}]}
        }}
    ], allowDiskUse=True)

Hinweis Ich habe meinen ursprünglichen Code in Pymongo für ein Problem geschrieben, bei dem 3 Felder in der ersten Gruppe gruppiert werden mussten, sodass dies für ein einzelnes Feld möglicherweise komplexer als erforderlich ist. Ich würde eine spezifische Lösung für diese Frage schreiben, aber ich glaube nicht, dass es genügend spezifische Informationen gibt.