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

> 반올림 함수 문서

# 반올림 함수

<Note>
  아래 문서는 `system.functions` 시스템 테이블에서 자동 생성되었습니다
</Note>

{/*AUTOGENERATED_START*/}

<div id="ceil">
  ## ceil
</div>

도입 버전: v1.1.0

[`floor`](#floor)와 유사하지만, `x`보다 크거나 같은 값 중 가장 작은 반올림 값을 반환합니다.
반올림으로 인해 오버플로우가 발생하면(예: `ceiling(255, -1)`), 결과는 정의되지 않습니다.

**구문**

```sql theme={null}
ceiling(x[, N])
```

**별칭**: `ceiling`

**인수**

* `x` — 반올림할 값입니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)
* `N` — 선택 사항입니다. 반올림할 소수점 이하 자릿수입니다. 기본값은 0이며, 이 경우 정수로 반올림합니다. 음수일 수 있습니다. [`(U)Int*`](/ko/reference/data-types/int-uint)

**반환 값**

`x`와 동일한 타입의 반올림된 숫자를 반환합니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT ceiling(123.45, 1) AS rounded
```

```response title=Response theme={null}
┌─rounded─┐
│   123.5 │
└─────────┘
```

**음수 정밀도**

```sql title=Query theme={null}
SELECT ceiling(123.45, -1)
```

```response title=Response theme={null}
┌─ceiling(123.45, -1)─┐
│                 130 │
└─────────────────────┘
```

<div id="floor">
  ## floor
</div>

도입 버전: v1.1.0

`x`보다 작거나 같은 값 중에서 가장 큰 반올림 값을 반환합니다. 여기서 반올림 값은 `1 / 10 * N`의 배수이며, `1 / 10 * N`을 정확하게 표현할 수 없으면 해당 데이터 타입에서 가장 가까운 값을 반환합니다.

정수 인수는 `N` 인수가 음수일 때 반올림될 수 있습니다.
`N`이 0 이상이면 함수는 `x`를 반환합니다.

반올림으로 인해 오버플로우가 발생하면(예: `floor(-128, -1)`), 결과는 정의되지 않습니다.

**구문**

```sql theme={null}
floor(x[, N])
```

**인수**

* `x` — 반올림할 값입니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)
* `N` — 선택 사항입니다. 반올림할 소수 자릿수입니다. 기본값은 0이며, 이 경우 정수로 반올림합니다. 음수일 수 있습니다. [`(U)Int*`](/ko/reference/data-types/int-uint)

**반환 값**

`x`와 동일한 타입의 반올림된 수를 반환합니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT floor(123.45, 1) AS rounded
```

```response title=Response theme={null}
┌─rounded─┐
│   123.4 │
└─────────┘
```

**음수 정밀도**

```sql title=Query theme={null}
SELECT floor(123.45, -1)
```

```response title=Response theme={null}
┌─floor(123.45, -1)─┐
│               120 │
└───────────────────┘
```

<div id="round">
  ## round
</div>

도입 버전: v1.1.0

값을 지정된 소수 자릿수 `N`에 맞춰 반올림합니다.

* `N > 0`이면 함수는 소수점 오른쪽 자리에서 반올림합니다.
* `N < 0`이면 함수는 소수점 왼쪽 자리에서 반올림합니다.
* `N = 0`이면 함수는 가장 가까운 정수로 반올림합니다.

이 함수는 지정된 자릿수에서 가장 가까운 수를 반환합니다.
입력값이 인접한 두 수와 같은 거리에 있으면, 함수는 `Float*` 입력에 대해 은행가 반올림을 사용하고 다른 숫자 타입(`Decimal*`)에 대해서는 0에서 멀어지는 방향으로 반올림합니다.

반올림으로 인해 오버플로우가 발생하면(예: `round(255, -1)`), 결과는 정의되지 않습니다.

**구문**

```sql theme={null}
round(x[, N])
```

**인수**

* `x` — 반올림할 숫자입니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)
* `N` — 선택 사항입니다. 반올림할 소수 자릿수입니다. 기본값은 `0`입니다. [`(U)Int*`](/ko/reference/data-types/int-uint)

**반환 값**

`x`와 같은 타입의 반올림된 숫자를 반환합니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)

**예시**

**Float 입력**

```sql title=Query theme={null}
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
```

```response title=Response theme={null}
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘
```

**Decimal 입력값**

```sql title=Query theme={null}
SELECT cast(number / 2 AS  Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;
```

```response title=Response theme={null}
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        1 │
│   1 │        1 │
└─────┴──────────┘
```

<div id="roundAge">
  ## roundAge
</div>

도입 버전: v1.1.0

사람의 나이를 나타내는 숫자를 받아 표준 연령대와 비교하여, 해당 숫자가 속한 구간의 최댓값 또는 최솟값을 반환합니다.

* `age < 1`이면 `0`을 반환합니다.
* `1 ≤ age ≤ 17`이면 `17`을 반환합니다.
* `18 ≤ age ≤ 24`이면 `18`을 반환합니다.
* `25 ≤ age ≤ 34`이면 `25`를 반환합니다.
* `35 ≤ age ≤ 44`이면 `35`를 반환합니다.
* `45 ≤ age ≤ 54`이면 `45`를 반환합니다.
* `age ≥ 55`이면 `55`를 반환합니다.

**구문**

```sql theme={null}
roundAge(num)
```

**인수**

* `age` — 연 단위 나이를 나타내는 숫자입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**반환 값**

`age`가 속한 범위의 최댓값 또는 최솟값에 해당하는 나이를 반환합니다. [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);
```

```response title=Response theme={null}
┌─number─┬─roundAge(number)─┐
│      0 │                0 │
│      5 │               17 │
│     20 │               18 │
│     31 │               25 │
│     37 │               35 │
│     54 │               45 │
│     72 │               55 │
└────────┴──────────────────┘
```

<div id="roundBankers">
  ## roundBankers
</div>

도입 버전: v20.1.0

숫자를 지정된 소수 자릿수 `N`으로 반올림합니다.
반올림 대상 숫자가 두 수의 정확한 중간값이면, 이 함수는 IEEE 754에서 부동소수점 수의 기본 반올림 방식으로 정의된 은행가 반올림 방식을 사용합니다.

* `N > 0`이면 함수는 소수점 오른쪽 자리에서 반올림합니다
* `N < 0`이면 함수는 소수점 왼쪽 자리에서 반올림합니다
* `N = 0`이면 함수는 가장 가까운 정수로 반올림합니다

<Info>
  **참고**

  * 반올림 대상 숫자가 두 수의 정확한 중간값이면, 지정한 자릿수에서 가장 가까운 짝수로 반올림됩니다.
    예를 들어 `3.5`는 올림되어 `4`가 되고, `2.5`는 내림되어 `2`가 됩니다.
  * `round` 함수도 부동소수점 수에 대해 동일한 방식으로 반올림합니다.
  * `roundBankers` 함수는 정수도 같은 방식으로 반올림합니다. 예를 들어 `roundBankers(45, -1) = 40`입니다.
  * 그 밖의 경우에는 숫자를 가장 가까운 정수로 반올림합니다.
</Info>

<Tip>
  **숫자를 더하거나 뺄 때 은행가 반올림을 사용하십시오**

  은행가 반올림을 사용하면 숫자를 반올림할 때 합계나 차의 결과에 미치는 영향을 줄일 수 있습니다.

  예를 들어 숫자 `1.5, 2.5, 3.5, 4.5`를 서로 다른 방식으로 반올림해 더하면 다음과 같습니다.

  * 반올림 없음: `1.5 + 2.5 + 3.5 + 4.5 = 12`.
  * Banker's rounding: `2 + 2 + 4 + 4 = 12`.
  * 가장 가까운 정수로 반올림: `2 + 3 + 4 + 5 = 14`.
</Tip>

**구문**

```sql theme={null}
roundBankers(x[, N])
```

**인수**

* `x` — 반올림할 숫자입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`Float*`](/ko/reference/data-types/float)
* `[, N]` — 선택 사항입니다. 반올림할 소수점 이하 자릿수입니다. 기본값은 `0`입니다. [`(U)Int*`](/ko/reference/data-types/int-uint)

**반환 값**

은행가 반올림 방식으로 반올림한 값을 반환합니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10
```

```response title=Response theme={null}
┌───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 │
└─────┴───┘
```

<div id="roundDown">
  ## roundDown
</div>

도입 버전: v20.1.0

숫자를 지정된 배열의 요소 중 하나에 맞춰 내림합니다.
값이 하한보다 작으면 하한이 반환됩니다.

**구문**

```sql theme={null}
roundDown(num, arr)
```

**인수**

* `num` — 내림할 숫자입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`Float*`](/ko/reference/data-types/float)
* `arr` — `num`을 내림할 기준이 되는 요소의 배열입니다. [`Array((U)Int*)`](/ko/reference/data-types/array) 또는 [`Array(Float*)`](/ko/reference/data-types/array)

**반환 값**

`arr`의 요소 중 하나로 내림된 숫자를 반환합니다. 값이 최솟값보다 작으면 최솟값을 반환합니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)
```

```response title=Response theme={null}
┌─number─┬─roundDown(number, [3, 4, 5])─┐
│      0 │                            3 │
│      1 │                            3 │
│      2 │                            3 │
│      3 │                            3 │
│      4 │                            4 │
│      5 │                            5 │
└────────┴──────────────────────────────┘
```

<div id="roundDuration">
  ## roundDuration
</div>

도입 버전: v1.1.0

숫자를 일반적으로 사용되는 지속 시간 값 집합 `1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000` 중에서 가장 가까운 더 작은 값으로 내림합니다.
숫자가 1보다 작으면 `0`을 반환합니다.

**구문**

```sql theme={null}
roundDuration(num)
```

**인수**

* `num` — 일반적으로 사용되는 기간 값 집합의 값 중 하나로 반올림할 숫자입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**반환 값**

`num` \< 1이면 `0`을 반환합니다. 그렇지 않으면 다음 값 중 하나를 반환합니다. `1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000`. [`UInt16`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)
```

```response title=Response theme={null}
┌─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 │
└────────┴───────────────────────┘
```

<div id="roundToExp2">
  ## roundToExp2
</div>

도입 버전: v1.1.0

숫자를 가장 가까운 (음이 아닌 정수인) 2의 거듭제곱으로 내림합니다.
숫자가 1보다 작으면 `0`을 반환합니다.

**구문**

```sql theme={null}
roundToExp2(num)
```

**인수**

* `num` — 내림할 숫자입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**반환 값**

`num`을 가장 가까운 2의 거듭제곱(0 이상의 정수)으로 내림한 값을 반환합니다. `num < 1`이면 `0`을 반환합니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)
```

```response title=Response theme={null}
┌─number─┬─roundToExp2(number)─┐
│      0 │                   0 │
│      2 │                   2 │
│      5 │                   4 │
│     10 │                   8 │
│     19 │                  16 │
│     50 │                  32 │
└────────┴─────────────────────┘
```

<div id="trunc">
  ## trunc
</div>

도입 버전: v1.1.0

[`floor`](#floor)와 비슷하지만, 절대값이 `x`의 절대값보다 작거나 같으면서 그중 가장 큰 반올림된 수를 반환합니다.

**구문**

```sql theme={null}
truncate(x[, N])
```

**별칭**: `truncate`

**인수**

* `x` — 반올림할 값입니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)
* `N` — 선택 사항입니다. 반올림할 소수점 이하 자릿수입니다. 기본값은 0이며, 이 경우 정수로 반올림됩니다. [`(U)Int*`](/ko/reference/data-types/int-uint)

**반환 값**

`x`와 동일한 타입의 반올림된 값을 반환합니다. [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal*`](/ko/reference/data-types/decimal) 또는 [`(U)Int*`](/ko/reference/data-types/int-uint)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT truncate(123.499, 1) AS res;
```

```response title=Response theme={null}
┌───res─┐
│ 123.4 │
└───────┘
```
