Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fonctions d’arrondi

ceil

Introduit dans : v1.1.0

Comme floor, mais renvoie le plus petit nombre arrondi qui est supérieur ou égal à x. Si l'arrondi provoque un dépassement de capacité (par exemple, ceiling(255, -1)), le résultat est indéfini.

Syntaxe

ceiling(x[, N])

Alias : ceiling

Arguments

  • x — La valeur à arrondir. Float* ou Decimal* ou (U)Int*
  • N — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est zéro, ce qui correspond à un arrondi à l’entier. Peut être négatif. (U)Int*

Valeur renvoyée

Renvoie un nombre arrondi du même type que x. Float* ou Decimal* ou (U)Int*

Exemples

Utilisation de base

SELECT ceiling(123.45, 1) AS rounded
┌─rounded─┐
│   123.5 │
└─────────┘

Précision négative

SELECT ceiling(123.45, -1)
┌─ceiling(123.45, -1)─┐
│                 130 │
└─────────────────────┘

floor

Introduit dans : v1.1.0

Renvoie le plus grand nombre arrondi inférieur ou égal à x, où ce nombre arrondi est un multiple de 1 / 10 * N, ou le nombre le plus proche du type de données approprié si 1 / 10 * N n’est pas exact.

Les arguments entiers peuvent être arrondis avec un argument N négatif. Avec un N non négatif, la fonction renvoie x.

Si l’arrondi provoque un dépassement de capacité (par exemple, floor(-128, -1)), le résultat est indéfini.

Syntaxe

floor(x[, N])

Arguments

  • x — La valeur à arrondir. Float* ou Decimal* ou (U)Int*
  • N — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est zéro, ce qui signifie un arrondi à l'entier. Peut être négatif. (U)Int*

Valeur renvoyée

Renvoie un nombre arrondi du même type que x. Float* ou Decimal* ou (U)Int*

Exemples

Exemple d'utilisation

SELECT floor(123.45, 1) AS rounded
┌─rounded─┐
│   123.4 │
└─────────┘

Précision négative

SELECT floor(123.45, -1)
┌─floor(123.45, -1)─┐
│               120 │
└───────────────────┘

round

Introduit dans : v1.1.0

Arrondit une valeur à un nombre donné de décimales N.

  • Si N > 0, la fonction arrondit à droite de la virgule.
  • Si N < 0, la fonction arrondit à gauche de la virgule.
  • Si N = 0, la fonction arrondit à l’entier le plus proche.

La fonction renvoie le nombre le plus proche à l’ordre spécifié. Si la valeur d’entrée est à égale distance de deux nombres voisins, la fonction utilise l’arrondi bancaire pour les entrées Float* et arrondit en s’éloignant de zéro pour les autres types numériques (Decimal*).

Si l’arrondi provoque un dépassement de capacité (par exemple, round(255, -1)), le résultat est indéfini.

Syntaxe

round(x[, N])

Arguments

  • x — Un nombre à arrondir. Float* ou Decimal* ou (U)Int*
  • N — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est 0. (U)Int*

Valeur renvoyée

Renvoie un nombre arrondi du même type que x. Float* ou Decimal* ou (U)Int*

Exemples

Entrées de type Float

SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘

Entrées de type Decimal

SELECT cast(number / 2 AS  Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        1 │
│   1 │        1 │
└─────┴──────────┘

roundAge

Introduit dans : v1.1.0

Prend un nombre représentant l’âge d’une personne, le compare aux tranches d’âge standard et renvoie soit la valeur la plus élevée, soit la valeur la plus basse de la tranche dans laquelle il se situe.

  • Renvoie 0, pour age < 1.
  • Renvoie 17, pour 1 ≤ age ≤ 17.
  • Renvoie 18, pour 18 ≤ age ≤ 24.
  • Renvoie 25, pour 25 ≤ age ≤ 34.
  • Renvoie 35, pour 35 ≤ age ≤ 44.
  • Renvoie 45, pour 45 ≤ age ≤ 54.
  • Renvoie 55, pour age ≥ 55.

Syntaxe

roundAge(num)

Arguments

  • age — Un nombre représentant un âge en années. (U)Int* ou Float*

Valeur renvoyée

Renvoie l'âge le plus élevé ou le plus bas de la plage dans laquelle se situe age. UInt8

Exemples

Exemple d'utilisation

SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);
┌─number─┬─roundAge(number)─┐
│      0 │                0 │
│      5 │               17 │
│     20 │               18 │
│     31 │               25 │
│     37 │               35 │
│     54 │               45 │
│     72 │               55 │
└────────┴──────────────────┘

roundBankers

Introduit dans : v20.1.0

Arrondit un nombre à la position décimale spécifiée N. Si le nombre à arrondir se trouve exactement à mi-chemin entre deux nombres, la fonction utilise une méthode d’arrondi appelée arrondi bancaire, qui est la méthode d’arrondi par défaut des nombres à virgule flottante selon la norme IEEE 754.

  • Si N > 0, la fonction arrondit à droite de la virgule
  • Si N < 0, la fonction arrondit à gauche de la virgule
  • Si N = 0, la fonction arrondit à l’entier le plus proche

Syntaxe

roundBankers(x[, N])

Arguments

  • x — Nombre à arrondir. (U)Int* ou Decimal* ou Float*
  • [, N] — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est 0. (U)Int*

Valeur renvoyée

Renvoie une valeur arrondie selon la méthode de l'arrondi bancaire. (U)Int* ou Decimal* ou Float*

Exemples

Utilisation de base

SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10
┌───x─┬─b─┐
│   0 │ 0 │
│ 0.5 │ 0 │
│   1 │ 1 │
│ 1.5 │ 2 │
│   2 │ 2 │
│ 2.5 │ 2 │
│   3 │ 3 │
│ 3.5 │ 4 │
│   4 │ 4 │
│ 4.5 │ 4 │
└─────┴───┘

roundDown

Introduit dans : v20.1.0

Arrondit un nombre vers le bas à un élément du tableau spécifié. Si la valeur est inférieure à la borne minimale, cette dernière est renvoyée.

Syntaxe

roundDown(num, arr)

Arguments

Valeur renvoyée

Renvoie un nombre arrondi à l'inférieur à une valeur de arr. Si la valeur est inférieure à la borne la plus basse, cette borne est renvoyée. (U)Int* ou Float*

Exemples

Exemple d'utilisation

SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)
┌─number─┬─roundDown(number, [3, 4, 5])─┐
│      0 │                            3 │
│      1 │                            3 │
│      2 │                            3 │
│      3 │                            3 │
│      4 │                            4 │
│      5 │                            5 │
└────────┴──────────────────────────────┘

roundDuration

Introduit dans : v1.1.0

Arrondit un nombre à la durée couramment utilisée inférieure la plus proche parmi les valeurs suivantes : 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. Si le nombre est inférieur à un, la fonction renvoie 0.

Syntaxe

roundDuration(num)

Arguments

  • num — Un nombre à arrondir à l’une des valeurs de l’ensemble des durées courantes. (U)Int* ou Float*

Valeur renvoyée

Renvoie 0 pour num < 1. Sinon, l’une des valeurs suivantes : 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16

Exemples

Exemple d’utilisation

SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)
┌─number─┬─roundDuration(number)─┐
│      0 │                     0 │
│      9 │                     1 │
│     19 │                    10 │
│     47 │                    30 │
│    101 │                    60 │
│    149 │                   120 │
│    205 │                   180 │
│    271 │                   240 │
│    421 │                   300 │
│    789 │                   600 │
│   1423 │                  1200 │
│   2345 │                  1800 │
│   4567 │                  3600 │
│   9876 │                  7200 │
│  24680 │                 18000 │
│  42573 │                 36000 │
└────────┴───────────────────────┘

roundToExp2

Introduit dans : v1.1.0

Arrondit un nombre à la puissance de deux entière non négative inférieure la plus proche. Si le nombre est inférieur à un, la fonction renvoie 0.

Syntaxe

roundToExp2(num)

Arguments

Valeur renvoyée

Renvoyer num arrondi à la plus grande puissance de deux (entière non négative) inférieure ou égale à num, sinon 0 si num < 1. (U)Int* ou Float*

Exemples

Exemple d'utilisation

SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)
┌─number─┬─roundToExp2(number)─┐
│      0 │                   0 │
│      2 │                   2 │
│      5 │                   4 │
│     10 │                   8 │
│     19 │                  16 │
│     50 │                  32 │
└────────┴─────────────────────┘

trunc

Introduit dans : v1.1.0

Comme floor, mais renvoie le nombre arrondi dont la valeur absolue est la plus grande tout en restant inférieure ou égale à celle de x.

Syntaxe

truncate(x[, N])

Alias : truncate

Arguments

  • x — La valeur à arrondir. Float* ou Decimal* ou (U)Int*
  • N — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est zéro, ce qui correspond à un arrondi à l’entier. (U)Int*

Valeur renvoyée

Renvoie un nombre arrondi du même type que x. Float* ou Decimal* ou (U)Int*

Exemples

Utilisation de base

SELECT truncate(123.499, 1) AS res;
┌───res─┐
│ 123.4 │
└───────┘
Navigation