> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação da window function cume_dist

# cume_dist

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**

```sql theme={null}
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](/pt-BR/reference/functions/window-functions/index#syntax).

**Valor retornado**

* A classificação relativa da linha atual. O tipo de retorno é Float64 no intervalo \[0, 1]. [Float64](/pt-BR/reference/data-types/float).

**Exemplo**

O exemplo a seguir calcula a distribuição cumulativa dos salários em uma equipe:

```sql title="Query" theme={null}
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');
```

```sql title="Query" theme={null}
SELECT player, salary,
       cume_dist() OVER (ORDER BY salary DESC) AS cume_dist
FROM salaries;
```

```response title="Response" theme={null}
   ┌─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:

```text theme={null}
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.
