# MIN

> Fonction d'agrégation MIN dans StackQL : la plus petite valeur d'une colonne ou d'un regroupement de colonnes.

Source: https://stackql.io/fr/language-spec/functions/aggregate/min

Renvoie la valeur minimale à partir d'une colonne d'entrée ou d'un regroupement de colonnes.  

Voir aussi :  
[[` SELECT `]](/language-spec/select) 

* * * 

## Syntaxe

```sql
/* aggregate function */
SELECT MIN(columnExpression) FROM <multipartIdentifier>
[ GROUP BY groupByColumn ];
```
```sql
/* scalar (multi-argument) function */
SELECT MIN(scalarExpression1, scalarExpressionN, ...) FROM <multipartIdentifier>;
```

## Arguments

### Fonction d'agrégation

__*columnExpression*__  
Une colonne ou une expression incluant des opérateurs (`+`, `-`, ...).

> La fonction `MIN` renvoie la plus petite valeur de la colonne donnée selon le type de données de la colonne ; par exemple, une opération `MIN` sur une colonne d'entiers renvoie le plus petit entier de cette colonne ou de ce regroupement de colonnes, tandis qu'une opération `MIN` sur une colonne ou un regroupement de colonnes de type chaîne de caractères renvoie la plus petite valeur ASCII (généralement la première valeur dans l'ordre lexicographique, à quelques différences près).

__*groupByColumn*__  
Une ou plusieurs colonnes sur lesquelles effectuer des opérations de synthèse ou d'agrégation.  La clause `GROUP BY` renvoie une ligne pour chaque regroupement de colonnes.

> La fonction `MIN` ignore les valeurs `NULL`.

> La fonction `MIN` renvoie `NULL` si toutes les valeurs du groupe sont `NULL`.

### Fonction scalaire

__*scalarExpression*__  
Une liste de colonnes ou d'expressions (2 ou plus) à partir de laquelle la plus petite valeur est déterminée et renvoyée. 

> La fonction scalaire `MIN` renvoie `NULL` si l'un des arguments est `NULL`. 

> La fonction `MIN` scalaire, ou à plusieurs arguments, parcourt ses arguments de gauche à droite à la recherche d'un argument qui définit une fonction de collation et utilise cette fonction de collation pour toutes les comparaisons de chaînes. 

> Si aucun des arguments de la fonction scalaire `MIN` ne définit de fonction de collation, la fonction de collation `BINARY` est utilisée. 

> Si un seul argument est fourni, la fonction d'agrégation `MIN` est appelée.

## Valeur(s) renvoyée(s)

Renvoie la valeur minimale selon le type de données en entrée (ou le regroupement).

* * *

## Exemples

### Renvoyer la valeur minimale d'une colonne

```sql
SELECT name, location, min(timeCreated) 
FROM google.storage.buckets WHERE project = 'stackql';
```

### Renvoyer la valeur minimale pour chaque valeur d'une colonne

```sql
SELECT name, location,
min(round(julianday('now')-julianday(timeCreated))) as age
FROM google.storage.buckets WHERE project = 'stackql'
GROUP BY location;
```

### Renvoyer la valeur minimale d'une liste de valeurs avec la fonction scalaire `min`

```sql
SELECT min(json_extract(disks, '$[0].diskSizeGb'),json_extract(disks, '$[1].diskSizeGb')) as smallest_disk
FROM google.compute.instances 
WHERE project = 'stackql-demo' 
AND zone = 'australia-southeast1-a';
```

### Utiliser `MIN` comme fonction de fenêtrage pour trouver les valeurs minimales au sein des partitions

```sql
-- Find the earliest issue in each state
SELECT
    number,
    title,
    state,
    created_at,
    MIN(created_at) OVER (PARTITION BY state) as earliest_in_state
FROM github.issues.issues
WHERE owner = 'stackql'
  AND repo = 'stackql'
ORDER BY state, created_at;
```

Pour plus d'informations, consultez [https://www.sqlite.org/lang_aggfunc.html#min_agg](https://www.sqlite.org/lang_aggfunc.html#min_agg) ou [https://www.sqlite.org/lang_corefunc.html#min_scalar](https://www.sqlite.org/lang_corefunc.html#min_scalar)
