quantileExactWeightedInterpolated
Introducido en: v24.10.0
Calcula el cuantil de una secuencia de datos numéricos mediante interpolación lineal, teniendo en cuenta el peso de cada elemento.
Para obtener el valor interpolado, todos los valores proporcionados se combinan en un array, que luego se ordena según sus pesos correspondientes. A continuación, la interpolación de cuantiles se realiza mediante el método de percentil ponderado, construyendo una distribución acumulada basada en los pesos, y después se lleva a cabo una interpolación lineal utilizando los pesos y los valores para calcular los cuantiles.
Al usar varias funciones quantile* con distintos niveles en una consulta, los estados internos no se combinan (es decir, la consulta funciona con menos eficiencia de la que podría).
En este caso, use la función quantiles.
Recomendamos encarecidamente usar quantileExactWeightedInterpolated en lugar de quantileInterpolatedWeighted porque quantileExactWeightedInterpolated es más precisa que quantileInterpolatedWeighted.
Consulte el ejemplo siguiente para obtener más detalles.
Sintaxis
quantileExactWeightedInterpolated(level)(expr, weight)Alias: medianExactWeightedInterpolated
Parámetros
level— Opcional. Nivel de cuantil. Número de coma flotante constante de 0 a 1. Recomendamos usar un valor delevelen el intervalo[0.01, 0.99]. Valor predeterminado: 0.5. Conlevel=0.5, la función calcula la mediana.Float*
Argumentos
expr— Expresión sobre los valores de la columna que da como resultado tipos de datos numéricos,Date,DateTimeoDateTime64.(U)Int*oInt128oUInt128oInt256oUInt256oFloat*oDecimal*oDateoDateTimeoDateTime64weight— Columna con los pesos de los miembros de la secuencia. El peso es el número de ocurrencias del valor.UInt*
Valor devuelto
Cuantil del nivel especificado. Los argumentos numéricos producen Float64, mientras que los argumentos Decimal, Date, DateTime y DateTime64 conservan su formato de entrada. Float64 o Decimal* o Date o DateTime o DateTime64
Ejemplos
Cálculo del cuantil interpolado ponderado exacto
CREATE TABLE t (
n Int32,
val UInt32
) ENGINE = Memory;
INSERT INTO t VALUES (0, 3), (1, 2), (2, 1), (5, 4);
SELECT quantileExactWeightedInterpolated(n, val) FROM t;┌─quantileExactWeightedInterpolated(n, val)─┐
│ 1.5 │
└───────────────────────────────────────────┘Prefiera quantileExactWeightedInterpolated en vez de quantileInterpolatedWeighted
SELECT
quantileExactWeightedInterpolated(0.99)(number, 1),
quantile(0.99)(number),
quantileInterpolatedWeighted(0.99)(number, 1)
FROM numbers(9)┌─quantileExactWeightedInterpolated(0.99)(number, 1)─┬─quantile(0.99)(number)─┬─quantileInterpolatedWeighted(0.99)(number, 1)─┐
│ 7.92 │ 7.92 │ 8 │
└────────────────────────────────────────────────────┴────────────────────────┴───────────────────────────────────────────────┘Véase también