FLOOR

FLOOR

input_expr의 값을, 같거나 더 작은 가장 가까운 정수로 반올림하거나, 소수점 이하 자릿수를 지정한 값으로 반올림해 반환해요.

출처: Snowflake SQL Reference - FLOOR

본문

구문

FLOOR( <input_expr> [, <scale_expr> ] )

인자

input_expr

  • 연산 대상이 되는 값 또는 표현식이에요. 데이터 타입은 DECFLOAT, FLOAT, NUMBER 같은 숫자 데이터 타입 중 하나여야 해요.

scale_expr

  • 출력이 소수점 이하에 포함해야 하는 자릿수예요. 기본 scale_expr은 0으로, 함수가 소수점 이하의 모든 자릿수를 제거한다는 뜻이에요. 음수 스케일에 대한 정보는 아래 사용 시 참고 사항을 참고하세요.

반환 값

반환 타입은 입력 타입에 따라 달라요.

  • 입력 표현식이 FLOAT이면 반환 타입은 FLOAT예요.
  • 입력 표현식이 DECFLOAT이면 반환 타입은 DECFLOAT예요.
  • 입력 표현식이 NUMBER이면 반환 타입은 NUMBER예요. 입력 스케일이 상수인 경우: 입력 스케일이 양수이면 반환 타입은 입력 스케일과 같은 스케일을 가지며, 가능한 모든 결과를 포괄할 수 있을 만큼 충분히 큰 정밀도를 가져요. 입력 스케일이 음수이면 반환 타입의 스케일은 0이에요. 입력 스케일이 상수가 아니면 반환 타입의 스케일은 입력 표현식의 스케일과 같아요.

스케일이 0이면 값은 사실상 INTEGER예요.

예를 들어:

  • FLOOR(3.14::FLOAT, 1)이 반환하는 데이터 타입은 FLOAT예요.
  • FLOOR(3.14, 1)이 반환하는 NUMBER는 스케일 1, 정밀도 최소 3이에요.
  • FLOOR(-9.99, 0)이 반환하는 NUMBER는 스케일 0, 정밀도 최소 2예요.
  • FLOOR(33.33, -1)이 반환하는 NUMBER는 스케일 0, 정밀도 최소 3이에요.

사용 시 참고 사항

  • scale_expr이 음수이면 소수점 이하 자릿수가 아니라 소수점 이전 자릿수를 기준으로 숫자를 조정한다는 뜻이에요. 예를 들어 스케일이 -2이면 결과는 100의 배수예요.
  • scale_expr이 입력 표현식의 스케일보다 크면 함수는 아무 효과가 없어요.
  • input_expr 또는 scale_expr 중 하나라도 NULL이면 결과는 NULL이에요.
  • 음수를 아래로 반올림하면 값이 0에서 더 멀어져요. 예를 들어 FLOOR(-1.1)은 -1이 아니라 -2예요.
  • 숫자를 아래로 반올림했을 때 그 숫자가 데이터 타입의 값 범위를 벗어나면 오류가 반환돼요.

예시

이 예시는 scale_expr 매개변수 없이 함수를 보여줘요.

SELECT FLOOR(135.135), FLOOR(-975.975);
+----------------+-----------------+
| FLOOR(135.135) | FLOOR(-975.975) |
|----------------+-----------------|
|            135 |            -976 |
+----------------+-----------------+

이 예시는 scale_expr 매개변수를 사용한 함수를 보여주며, 스케일을 음수로 설정한 경우도 포함해요.

테이블을 만들고 채웁니다.

CREATE TABLE test_floor (n FLOAT, scale INTEGER);
INSERT INTO test_floor (n, scale) VALUES
   (-975.975, -1),
   (-975.975,  0),
   (-975.975,  2),
   ( 135.135, -2),
   ( 135.135,  0),
   ( 135.135,  1),
   ( 135.135,  3),
   ( 135.135, 50),
   ( 135.135, NULL)
   ;

출력:

SELECT n, scale, FLOOR(n, scale)
  FROM test_floor
  ORDER BY n, scale;
+----------+-------+-----------------+
|        N | SCALE | FLOOR(N, SCALE) |
|----------+-------+-----------------|
| -975.975 |    -1 |        -980     |
| -975.975 |     0 |        -976     |
| -975.975 |     2 |        -975.98  |
|  135.135 |    -2 |         100     |
|  135.135 |     0 |         135     |
|  135.135 |     1 |         135.1   |
|  135.135 |     3 |         135.135 |
|  135.135 |    50 |         135.135 |
|  135.135 |  NULL |            NULL |
+----------+-------+-----------------+

더 알아보기