Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El $percentile operador calcula el percentil de los valores numéricos que coinciden con un criterio de filtrado. Este operador es especialmente útil para identificar umbrales estadísticos, como medianas o percentiles.
Syntax
$percentile: {
input: < field or expression > ,
p: [ < percentile values > ],
method: < method >
}
Parámetros
| Parámetro | Description |
|---|---|
input |
Especifica los datos numéricos a partir de los que se va a calcular el percentil. |
p |
Matriz de valores de percentil (entre 0 y 1) que se va a calcular. |
method |
Especifica el método de interpolación que se va a usar. Los valores válidos son "approximate" y "continuous". |
Examples
Considere este documento de ejemplo de la colección de tiendas.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Ejemplo 1: Calcular el percentil 50 del volumen de ventas
Esta consulta calcula el percentil 50 (mediana) del volumen total de ventas dentro de cada categoría de ventas en todas las tiendas.
db.stores.aggregate([{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: null,
medianSales: {
$percentile: {
input: "$sales.salesByCategory.totalSales",
p: [0.5],
method: "approximate"
}
}
}
}
])
Esta consulta devuelve el siguiente resultado:
[
{
"_id": null,
"medianSales": [
25070.449624139295
]
}
]
Ejemplo 2: Cálculo de varios percentiles
Esta consulta calcula los percentiles 25, 50 y 75 del total de ventas en todas las tiendas.
db.stores.aggregate([{
$group: {
_id: null,
percentiles: {
$percentile: {
input: "$sales.fullSales",
p: [0.25, 0.5, 0.75],
method: "approximate"
}
}
}
}])
Esta consulta devuelve el siguiente resultado:
[
{
"_id": null,
"percentiles": [
3700,
3700,
3700
]
}
]