적용 대상:
Databricks SQL
Databricks Runtime 10.4 LTS 이상
소수점을 기준으로 expr까지 반올림하여 targetScale 미만인 가장 큰 수를 반환합니다.
구문
floor(expr [, targetScale])
인수
-
expr: 숫자로 계산되는 식입니다. -
targetScale: 버림할 소수 자릿수를 지정하는-38보다 큰 선택적 INTEGER 리터럴입니다.
반품
targetScale을 지정하지 않은 경우:
-
expr가DECIMAL(p, s)이면DECIMAL(p - s + 1, 0)를 반환합니다. - 다른 모든 경우에는 BIGINT를 반환합니다.
targetScale을 지정하고 expr이 해당하는 경우:
TINYINTDECIMAL(p, 0)에p = max(3, -targetScale + 1)을 반환합니다.SMALLINTDECIMAL(p, 0)에p = max(5, -targetScale + 1)을 반환합니다.INTEGERDECIMAL(p, 0)에p = max(10, -targetScale + 1))을 반환합니다.BIGINTDECIMAL(p, 0)에p = max(20, -targetScale + 1))을 반환합니다.FLOATDECIMAL(p, s)및p = max(14, -targetScale + 1))에s = min(7, max(0, targetScale))을 반환합니다.DOUBLEDECIMAL(p, s)및p = max(30, -targetScale + 1))에s = min(15, max(0, targetScale))을 반환합니다.DECIMAL(p_in, s_in)DECIMAL(p, s)및p = max(p_in - s_in + 1, -targetScale + 1))에s = min(s_in, max(0, targetScale))을 반환합니다.
targetScale이 음수이면 소수점 왼쪽 -targetScale자리로 반올림됩니다.
기본 targetScale은 0이며 다음으로 작은 정수까지 버립니다.
정수 입력 형식으로 targetScale 지정하면 결과가 출력 형식을 오버플로하면 Azure Databricks ARITHMETIC_OVERFLOW 발생합니다.
경고
Databricks Runtime에서 spark.sql.ansi.enabled 인 false경우 오버플로로 인해 오류가 발생하지 않고 결과를 대신 "래핑"합니다.
일반적인 오류 조건
예제
> SELECT floor(-0.1);
-1
> SELECT floor(5);
5
> SELECT floor(3345.1, -2);
3300
> SELECT floor(-12.345, 1);
-12.4
-- Rounding -128 to the nearest 10 produces -130, which overflows TINYINT.
> SELECT floor(cast(-128 AS TINYINT), -1);
Error: ARITHMETIC_OVERFLOW