> ## 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.

> Documentation de la window function cume_dist

# cume_dist

Calcule la distribution cumulative d’une valeur au sein d’un groupe de valeurs, c’est-à-dire le pourcentage de lignes dont la valeur est inférieure ou égale à celle de la ligne courante. Cette fonction peut être utilisée pour déterminer la position relative d’une valeur au sein d’une partition.

**Syntaxe**

```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)
```

La définition du cadre de fenêtre, obligatoire et utilisée par défaut, est `RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING`.

Pour plus de détails sur la syntaxe des fonctions de fenêtre, voir : [Fonctions de fenêtre - Syntaxe](/fr/reference/functions/window-functions/index#syntax).

**Valeur renvoyée**

* Le rang relatif de la ligne actuelle. Le type de retour est Float64 dans l’intervalle \[0, 1]. [Float64](/fr/reference/data-types/float).

**Exemple**

L’exemple suivant calcule la distribution cumulative des salaires au sein d’une équipe :

```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 │
   └─────────────────┴────────┴─────────────────────┘
```

**Détails d’implémentation**

La fonction `cume_dist()` calcule la position relative à l’aide de la formule suivante :

```text theme={null}
cume_dist = (number of rows ≤ current row value) / (total number of rows in partition)
```

Les lignes ayant des valeurs égales (ex æquo) reçoivent la même valeur de distribution cumulative, qui correspond à la position la plus élevée du groupe ex æquo.
