Saltar al contenido principal

quantileGK

Introducido en: v23.4.0 Calcula el quantile de una secuencia de datos numéricos mediante el algoritmo Greenwald-Khanna. El algoritmo Greenwald-Khanna se utiliza para calcular cuantiles en un flujo de datos de forma muy eficiente. Fue introducido por Michael Greenwald y Sanjeev Khanna en 2001. Se usa ampliamente en bases de datos y sistemas de big data donde es necesario calcular cuantiles precisos sobre grandes flujos de datos en tiempo real. El algoritmo es muy eficiente, ya que solo requiere O(log n) de espacio y O(log log n) de tiempo por elemento (donde n es el tamaño de la entrada). También es muy preciso, ya que proporciona un valor de cuantil aproximado con alta probabilidad. quantileGK se diferencia de otras funciones de cuantiles de ClickHouse porque permite al usuario controlar la precisión del resultado aproximado del cuantil. Sintaxis
quantileGK(accuracy, level)(expr)
Alias: medianGK Parámetros
  • accuracy — Precisión del cuantil. Entero positivo constante. Un valor de precisión más alto implica un menor error. Por ejemplo, si el argumento accuracy se establece en 100, el cuantil calculado tendrá un error no superior al 1 % con alta probabilidad. Existe un equilibrio entre la precisión de los cuantiles calculados y la complejidad computacional del algoritmo. Una precisión mayor requiere más memoria y recursos computacionales para calcular el cuantil con exactitud, mientras que un valor menor de accuracy permite un cálculo más rápido y con un uso de memoria más eficiente, aunque con una precisión ligeramente inferior. UInt*
  • level — Opcional. Nivel del cuantil. Número constante de punto flotante entre 0 y 1. Valor predeterminado: 0.5. Con level=0.5, la función calcula la mediana. Float*
Argumentos
  • expr — Expresión sobre los valores de la columna que da como resultado tipos de datos numéricos, Date o DateTime. (U)Int* o Float* o Decimal* o Date o DateTime
Valor devuelto Devuelve el cuantil con el nivel y la precisión especificados. Float64 o Date o DateTime Ejemplos Cálculo del cuantil con distintos niveles de precisión
Query
SELECT quantileGK(1, 0.25)(number + 1) FROM numbers(1000);
Response
┌─quantileGK(1, 0.25)(plus(number, 1))─┐
│                                    1 │
└──────────────────────────────────────┘
Cuantil con mayor precisión
Query
SELECT quantileGK(100, 0.25)(number + 1) FROM numbers(1000);
Response
┌─quantileGK(100, 0.25)(plus(number, 1))─┐
│                                    251 │
└────────────────────────────────────────┘
Ver también
Última modificación el 10 de junio de 2026