Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantileExactWeightedInterpolated

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 de level no intervalo [0.01, 0.99]. Valor padrão: 0.5. Em level=0.5, a função calcula a mediana. Float*

Argumentos

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

Navigation