Saltar al contenido principal
Calcula la distribución acumulada de un valor dentro de un grupo de valores; es decir, el porcentaje de filas cuyos valores son menores o iguales que el valor de la fila actual. Puede usarse para determinar la posición relativa de un valor dentro de una partición. Sintaxis
cume_dist ()
  OVER ([[PARTITION BY grouping_column] [ORDER BY sorting_column]
        [RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] | [window_name])
FROM table_name
WINDOW window_name as ([PARTITION BY grouping_column] [ORDER BY sorting_column] RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
La definición predeterminada y obligatoria del marco de ventana es RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING. Para obtener más información sobre la sintaxis de las funciones de ventana, consulte: Funciones de ventana - Sintaxis. Valor devuelto
  • El rango relativo de la fila actual. El tipo devuelto es Float64 en el intervalo [0, 1]. Float64.
Ejemplo El siguiente ejemplo calcula la distribución acumulada de los salarios dentro de un equipo:
Query
CREATE TABLE salaries
(
    `team` String,
    `player` String,
    `salary` UInt32,
    `position` String
)
Engine = Memory;

INSERT INTO salaries FORMAT Values
    ('Port Elizabeth Barbarians', 'Gary Chen', 195000, 'F'),
    ('New Coreystad Archdukes', 'Charles Juarez', 190000, 'F'),
    ('Port Elizabeth Barbarians', 'Michael Stanley', 150000, 'D'),
    ('New Coreystad Archdukes', 'Scott Harrison', 150000, 'D'),
    ('Port Elizabeth Barbarians', 'Robert George', 195000, 'M'),
    ('South Hampton Seagulls', 'Douglas Benson', 150000, 'M'),
    ('South Hampton Seagulls', 'James Henderson', 140000, 'M');
Query
SELECT player, salary,
       cume_dist() OVER (ORDER BY salary DESC) AS cume_dist
FROM salaries;
Response
   ┌─player──────────┬─salary─┬───────────cume_dist─┐
1. │ Robert George   │ 195000 │  0.2857142857142857 │
2. │ Gary Chen       │ 195000 │  0.2857142857142857 │
3. │ Charles Juarez  │ 190000 │ 0.42857142857142855 │
4. │ Douglas Benson  │ 150000 │  0.8571428571428571 │
5. │ Michael Stanley │ 150000 │  0.8571428571428571 │
6. │ Scott Harrison  │ 150000 │  0.8571428571428571 │
7. │ James Henderson │ 140000 │                   1 │
   └─────────────────┴────────┴─────────────────────┘
Detalles de implementación La función cume_dist() calcula la posición relativa mediante la siguiente fórmula:
cume_dist = (number of rows ≤ current row value) / (total number of rows in partition)
Las filas con valores iguales (empates) reciben el mismo valor de distribución acumulada, que corresponde a la posición más alta del grupo empatado.
Última modificación el 10 de junio de 2026