quantileExactWeightedInterpolated
Introduzido em: v24.10.0
Calcula o quantil de uma sequência de dados numéricos usando interpolação linear, levando em consideração o peso de cada elemento.
Para obter o valor interpolado, todos os valores fornecidos são combinados em um array, que depois é ordenado de acordo com os respectivos pesos. A interpolação de quantis é então realizada usando o método do percentil ponderado, construindo uma distribuição cumulativa com base nos pesos e, em seguida, aplicando interpolação linear com os pesos e os valores para calcular os quantis.
Ao usar várias funções quantile* com níveis diferentes em uma consulta, os estados internos não são combinados (ou seja, a consulta funciona com menos eficiência do que poderia).
Nesse caso, use a função quantiles.
Recomendamos fortemente usar quantileExactWeightedInterpolated em vez de quantileInterpolatedWeighted, porque quantileExactWeightedInterpolated é mais precisa que quantileInterpolatedWeighted.
Veja o exemplo abaixo para mais detalhes.
Sintaxe
quantileExactWeightedInterpolated(level)(expr, weight)Aliases: medianExactWeightedInterpolated
Parâmetros
level— Opcional. Nível do quantil. Número de ponto flutuante constante de 0 a 1. Recomendamos usar um valor delevelno intervalo[0.01, 0.99]. Valor padrão: 0.5. Emlevel=0.5, a função calcula a mediana.Float*
Argumentos
expr— Expressão aplicada aos valores da coluna, resultando em tipos de dados numéricos,Date,DateTimeouDateTime64.(U)Int*ouInt128ouUInt128ouInt256ouUInt256ouFloat*ouDecimal*ouDateouDateTimeouDateTime64weight— Coluna com os pesos dos membros da sequência. O peso é o número de ocorrências do valor.UInt*
Valor retornado
Quantil do nível especificado. Argumentos numéricos produzem Float64, enquanto argumentos Decimal, Date, DateTime e DateTime64 mantêm seu formato de entrada. Float64 ou Decimal* ou Date ou DateTime ou DateTime64
Exemplos
Cálculo do quantil interpolado ponderado exato
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 │
└───────────────────────────────────────────┘Prefira quantileExactWeightedInterpolated em 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 │
└────────────────────────────────────────────────────┴────────────────────────┴───────────────────────────────────────────────┘Veja também