sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo calcular el percentil?

Todavía parece que no hay una forma nativa de calcular los percentiles, pero al combinar algunos operadores agregados puede obtener el mismo resultado.

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)

Tenga en cuenta que escribí mi código original en pymongo para un problema que necesitaba agrupar en 3 campos en el primer grupo, por lo que esto puede ser más complejo de lo necesario para un solo campo. Escribiría una solución específica para esta pregunta, pero no creo que haya suficiente información específica.