Pular para o conteúdo principal

quantileTimingWeighted

Introduzido em: v1.1.0 Com a precisão especificada, calcula o quantil de uma sequência de dados numéricos de acordo com o peso de cada elemento da sequência. O resultado é determinístico (não depende da ordem de processamento da consulta). A função é otimizada para trabalhar com sequências que descrevem distribuições, como tempos de carregamento de páginas da web ou tempos de resposta do backend. 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 é executada com menos eficiência do que poderia). Nesse caso, use a função quantiles. Precisão O cálculo é preciso se:
  • O número total de valores não exceder 5670.
  • O número total de valores exceder 5670, mas o tempo de carregamento da página for inferior a 1024 ms.
Caso contrário, o resultado do cálculo é arredondado para o múltiplo de 16 ms mais próximo.
Para calcular quantis de tempo de carregamento de páginas, esta função é mais eficiente e precisa do que quantile.
Se nenhum valor for passado para a função (ao usar quantileTimingIf), NaN será retornado. O objetivo disso é diferenciar esses casos daqueles que resultam em zero. Consulte a cláusula ORDER BY para ver observações sobre a ordenação de valores NaN.
Sintaxe
quantileTimingWeighted(level)(expr, weight)
Aliases: medianTimingWeighted Parâmetros
  • level — Opcional. Nível do quantil. Número constante de ponto flutuante entre 0 e 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
  • expr — Expressão sobre os valores de uma coluna que retorna um número do tipo Float*. Se valores negativos forem passados para a função, o comportamento será indefinido. Se o valor for maior que 30.000 (um tempo de carregamento de página superior a 30 segundos), ele será tratado como 30.000. Float*
  • weight — Coluna com os pesos dos elementos da sequência. O peso é o número de ocorrências do valor. UInt*
Valor retornado Quantil do nível especificado. Float32 Exemplos Calculando o quantil ponderado de tempo
Query
CREATE TABLE t (response_time UInt32, weight UInt32) ENGINE = Memory;
INSERT INTO t VALUES (68, 1), (104, 2), (112, 3), (126, 2), (138, 1), (162, 1);

SELECT quantileTimingWeighted(response_time, weight) FROM t;
Response
┌─quantileTimingWeighted(response_time, weight)─┐
│                                           112 │
└───────────────────────────────────────────────┘
Última modificação em 10 de junho de 2026