ceil
도입 버전: v1.1.0
floor와 유사하지만, x보다 크거나 같은 값 중 가장 작은 반올림 값을 반환합니다.
반올림으로 인해 오버플로우가 발생하면(예: ceiling(255, -1)), 결과는 정의되지 않습니다.
구문
ceiling(x[, N])별칭: ceiling
인수
x— 반올림할 값입니다.Float*또는Decimal*또는(U)Int*N— 선택 사항입니다. 반올림할 소수점 이하 자릿수입니다. 기본값은 0이며, 이 경우 정수로 반올림합니다. 음수일 수 있습니다.(U)Int*
반환 값
x와 동일한 타입의 반올림된 숫자를 반환합니다. Float* 또는 Decimal* 또는 (U)Int*
예시
기본 사용법
SELECT ceiling(123.45, 1) AS rounded┌─rounded─┐
│ 123.5 │
└─────────┘음수 정밀도
SELECT ceiling(123.45, -1)┌─ceiling(123.45, -1)─┐
│ 130 │
└─────────────────────┘floor
도입 버전: v1.1.0
x보다 작거나 같은 값 중에서 가장 큰 반올림 값을 반환합니다. 여기서 반올림 값은 1 / 10 * N의 배수이며, 1 / 10 * N을 정확하게 표현할 수 없으면 해당 데이터 타입에서 가장 가까운 값을 반환합니다.
정수 인수는 N 인수가 음수일 때 반올림될 수 있습니다.
N이 0 이상이면 함수는 x를 반환합니다.
반올림으로 인해 오버플로우가 발생하면(예: floor(-128, -1)), 결과는 정의되지 않습니다.
구문
floor(x[, N])인수
x— 반올림할 값입니다.Float*또는Decimal*또는(U)Int*N— 선택 사항입니다. 반올림할 소수 자릿수입니다. 기본값은 0이며, 이 경우 정수로 반올림합니다. 음수일 수 있습니다.(U)Int*
반환 값
x와 동일한 타입의 반올림된 수를 반환합니다. Float* 또는 Decimal* 또는 (U)Int*
예시
사용 예시
SELECT floor(123.45, 1) AS rounded┌─rounded─┐
│ 123.4 │
└─────────┘음수 정밀도
SELECT floor(123.45, -1)┌─floor(123.45, -1)─┐
│ 120 │
└───────────────────┘round
도입 버전: v1.1.0
값을 지정된 소수 자릿수 N에 맞춰 반올림합니다.
N > 0이면 함수는 소수점 오른쪽 자리에서 반올림합니다.N < 0이면 함수는 소수점 왼쪽 자리에서 반올림합니다.N = 0이면 함수는 가장 가까운 정수로 반올림합니다.
이 함수는 지정된 자릿수에서 가장 가까운 수를 반환합니다.
입력값이 인접한 두 수와 같은 거리에 있으면, 함수는 Float* 입력에 대해 은행가 반올림을 사용하고 다른 숫자 타입(Decimal*)에 대해서는 0에서 멀어지는 방향으로 반올림합니다.
반올림으로 인해 오버플로우가 발생하면(예: round(255, -1)), 결과는 정의되지 않습니다.
구문
round(x[, N])인수
반환 값
x와 같은 타입의 반올림된 숫자를 반환합니다. Float* 또는 Decimal* 또는 (U)Int*
예시
Float 입력
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
└─────┴──────────┘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
도입 버전: 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를 반환합니다.
구문
roundAge(num)인수
반환 값
age가 속한 범위의 최댓값 또는 최솟값에 해당하는 나이를 반환합니다. UInt8
예시
사용 예시
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
도입 버전: v20.1.0
숫자를 지정된 소수 자릿수 N으로 반올림합니다.
반올림 대상 숫자가 두 수의 정확한 중간값이면, 이 함수는 IEEE 754에서 부동소수점 수의 기본 반올림 방식으로 정의된 은행가 반올림 방식을 사용합니다.
N > 0이면 함수는 소수점 오른쪽 자리에서 반올림합니다N < 0이면 함수는 소수점 왼쪽 자리에서 반올림합니다N = 0이면 함수는 가장 가까운 정수로 반올림합니다
구문
roundBankers(x[, N])인수
x— 반올림할 숫자입니다.(U)Int*또는Decimal*또는Float*[, N]— 선택 사항입니다. 반올림할 소수점 이하 자릿수입니다. 기본값은0입니다.(U)Int*
반환 값
은행가 반올림 방식으로 반올림한 값을 반환합니다. (U)Int* 또는 Decimal* 또는 Float*
예시
기본 사용법
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
도입 버전: v20.1.0
숫자를 지정된 배열의 요소 중 하나에 맞춰 내림합니다. 값이 하한보다 작으면 하한이 반환됩니다.
구문
roundDown(num, arr)인수
num— 내림할 숫자입니다.(U)Int*또는Decimal*또는Float*arr—num을 내림할 기준이 되는 요소의 배열입니다.Array((U)Int*)또는Array(Float*)
반환 값
arr의 요소 중 하나로 내림된 숫자를 반환합니다. 값이 최솟값보다 작으면 최솟값을 반환합니다. (U)Int* 또는 Float*
예시
사용 예시
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
도입 버전: v1.1.0
숫자를 일반적으로 사용되는 지속 시간 값 집합 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000 중에서 가장 가까운 더 작은 값으로 내림합니다.
숫자가 1보다 작으면 0을 반환합니다.
구문
roundDuration(num)인수
반환 값
num < 1이면 0을 반환합니다. 그렇지 않으면 다음 값 중 하나를 반환합니다. 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16
예시
사용 예시
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
도입 버전: v1.1.0
숫자를 가장 가까운 (음이 아닌 정수인) 2의 거듭제곱으로 내림합니다.
숫자가 1보다 작으면 0을 반환합니다.
구문
roundToExp2(num)인수
반환 값
num을 가장 가까운 2의 거듭제곱(0 이상의 정수)으로 내림한 값을 반환합니다. num < 1이면 0을 반환합니다. (U)Int* 또는 Float*
예시
사용 예시
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
도입 버전: v1.1.0
floor와 비슷하지만, 절대값이 x의 절대값보다 작거나 같으면서 그중 가장 큰 반올림된 수를 반환합니다.
구문
truncate(x[, N])별칭: truncate
인수
x— 반올림할 값입니다.Float*또는Decimal*또는(U)Int*N— 선택 사항입니다. 반올림할 소수점 이하 자릿수입니다. 기본값은 0이며, 이 경우 정수로 반올림됩니다.(U)Int*
반환 값
x와 동일한 타입의 반올림된 값을 반환합니다. Float* 또는 Decimal* 또는 (U)Int*
예시
기본 사용법
SELECT truncate(123.499, 1) AS res;┌───res─┐
│ 123.4 │
└───────┘