Pular para o conteúdo principal
Calcula a distribuição cumulativa de um valor em um grupo de valores, ou seja, a porcentagem de linhas com valores menores ou iguais ao valor da linha atual. Pode ser usada para determinar a posição relativa de um valor dentro de uma partição. Sintaxe
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)
A definição de frame de janela padrão e obrigatória é RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING. Para mais detalhes sobre a sintaxe de funções de janela, consulte: Window Functions - Syntax. Valor retornado
  • A classificação relativa da linha atual. O tipo de retorno é Float64 no intervalo [0, 1]. Float64.
Exemplo O exemplo a seguir calcula a distribuição cumulativa dos salários em uma equipe:
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 │
   └─────────────────┴────────┴─────────────────────┘
Detalhes de implementação A função cume_dist() calcula a posição relativa usando a fórmula a seguir:
cume_dist = (number of rows ≤ current row value) / (total number of rows in partition)
Linhas com valores iguais (pares) recebem o mesmo valor de distribuição cumulativa, que corresponde à posição mais alta do grupo de pares.
Última modificação em 10 de junho de 2026