quantileExactWeighted
Introduzido em: v1.1.0
Calcula exatamente o quantil de uma sequência de dados numéricos, levando em consideração o peso de cada elemento.
Para obter o valor exato, todos os valores fornecidos são combinados em um array, que é então parcialmente ordenado.
Cada valor é contabilizado com seu peso, como se estivesse presente weight vezes.
Uma tabela hash é usada no algoritmo.
Por isso, se os valores fornecidos se repetirem com frequência, a função consome menos RAM do que quantileExact.
Você pode usar esta função em vez de quantileExact e especificar o peso como 1.
Ao usar várias funções quantile* com diferentes níveis 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.
Sintaxe
quantileExactWeighted(level)(expr, weight)Aliases: medianExactWeighted
Parâmetros
level— Opcional. Nível do quantil. Número de ponto flutuante constante de 0 a 1. Recomendamos usar um valor delevelno intervalo de[0.01, 0.99]. Valor padrão: 0.5. Emlevel=0.5, a função calcula a mediana.Float*
Argumentos
expr— Expressão sobre os valores da coluna que resulta em tipos de dados numéricos,Date,DateTimeouDateTime64.(U)Int*ouInt128ouUInt128ouInt256ouUInt256ouFloat*ouDecimal*ouDateouDateTimeouDateTime64weight— Coluna com os pesos dos elementos da sequência. O peso é o número de ocorrências de um valor.UInt*
Valor retornado
Quantil no nível especificado. Para tipos de dados numéricos, o formato de saída corresponde ao formato de entrada. (U)Int* ou Int128 ou UInt128 ou Int256 ou UInt256 ou Float* ou Decimal* ou Date ou DateTime ou DateTime64
Exemplos
Cálculo do quantil ponderado exato
CREATE TABLE t (
n Int32,
val UInt32
) ENGINE = Memory;
-- Insert the sample data
INSERT INTO t VALUES
(0, 3),
(1, 2),
(2, 1),
(5, 4);
SELECT quantileExactWeighted(n, val) FROM t;┌─quantileExactWeighted(n, val)─┐
│ 1 │
└───────────────────────────────┘Veja também