quantiles
Introduzido em: v1.1.0
Calcula vários quantis aproximados de uma sequência de dados numéricos em diferentes níveis ao mesmo tempo.
Esta função aplica amostragem por reservatório, com tamanho de reservatório de até 8192, e um gerador de números aleatórios para a amostragem. O resultado não é determinístico.
Usar quantiles é mais eficiente do que chamar várias funções quantile individualmente quando você precisa de vários valores de quantil, pois todos os quantis são calculados em uma única passagem pelos dados.
Sintaxe
quantiles(level1, level2, ...)(expr)Parâmetros
level— Níveis dos quantis. Um ou mais números de ponto flutuante constantes entre 0 e 1. Recomendamos usar valores delevelno intervalo[0.01, 0.99].Float*
Argumentos
expr— Expressão sobre os valores da coluna que resulta em tipos de dados numéricos,Date,DateTimeouDateTime64.(U)Int*ouInt128ouUInt128ouInt256ouUInt256ouFloat*ouDecimal*ouDateouDateTimeouDateTime64
Valor retornado
Array de quantis aproximados dos níveis especificados, na mesma ordem em que os níveis foram especificados. Argumentos numéricos produzem Float64, enquanto argumentos Decimal, Date, DateTime e DateTime64 mantêm seu formato de entrada. Array(Float64) ou Array(Decimal*) ou Array(Date) ou Array(DateTime) ou Array(DateTime64)
Exemplos
Calculando vários quantis com eficiência
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [2.5,5,7.5,9] │
└──────────────────────────────────────┘