[Oracle] Round, Trunc, Ceil, Floor (반올림, 버림, 올림, 내림) 오라클 함수 궁금해요~

이번 시간에는 오라클에서 소수점을 처리하는 함수에 대해 안내해드리려고 합니다! 소수점은 반올림이 대표적이고, 올리거나 버림을 택할 것입니다. 이에 해당하는 적용 방법을 알아보도록 합시다.

Round 함수, 반올림

오라클 반올림

ROUND 함수로 반올림을 하는 방법에 대해 알아봅시다. 라운드 함수는 2개의 인수로 호출할 수 있으며, 첫 번째 인수는 반올림 대상이 되는 변수, 두 번째 인수는 반올림하려는 자릿수를 지정합니다.

자릿수 지정에 따라 어떠한 값을 반환하는지 확인해 볼 것이며, 라운드 함수의 문법은 다음과 같습니다~

--ROUND syntax

ROUND (target, int)

ROUND 함수는 target 값을 int 자리까지 반올림합니다.

두 번째 인수가 1 이면 소수점 첫 째자리까지, 5 면 소수점 다섯 째자리까지입니다. 음수도 설정이 가능한데, 음수를 넣으면 해당 자리에서 반올림할 수 있습니다.

참고로 라운드 함수의 타겟 대상은 숫자뿐만 아니라 날짜 형식과 같은 데이터타입도 할 수 있습니다. ROUND (date, format)

예시 자료를 살펴보며 이해를 도와드리겠습니다.

SELECT ROUND (55555.55555, 5) "5",
       ROUND (55555.55555, 4) "4",
       ROUND (55555.55555, 3) "3",
       ROUND (55555.55555, 2) "2",
       ROUND (55555.55555, 1) "1",
       ROUND (55555.55555, 0) "0",
       ROUND (55555.55555, -1) "-1",
       ROUND (55555.55555, -2) "-2",
       ROUND (55555.55555, -3) "-3",
       ROUND (55555.55555, -4) "-4",
       ROUND (55555.55555, -5) "-5"
  FROM DUAL;

5           4          3          2          1          0          -1         -2         -3         -4         -5
----------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
55555.55555 55555.5556 55555.556  55555.56   55555.6    55556      55560      55600      56000      60000     100000

두 번째 인수 자릿수까지 반올림하는 모습을 확인할 수 있습니다.

TRUNC 함수, 버림

트렁크 함수는 Truncate의 약자이며, 버리거나 자른다는 뜻을 가지고 있습니다. 이름의 의미처럼 버림 처리를 하는 역할을 하는 함수입니다. 문법을 살펴보겠습니다.

--TRUNC syntax

TRUNC (target, int)

TRUNC 함수는 target 값의 int 자리 미만을 버립니다.

두 번째 인수가 1 이면 소수점 첫 째자리 미만을 버립니다. 그리고 5 면 소수점 다섯 째자리 미만을 버립니다. 그리고 음수를 넣으면 해당 자리 수를 버립니다.

날짜 데이터타입에 대해 호출하는 것도 가능합니다. TRUNC (date, format), 특히 시스템데이트를 버릴 때 유용하게 사용할 수 있습니다.

SELECT SYSDATE, TRUNC (SYSDATE) FROM DUAL;

SYSDATE                    TRUNC(SYSDATE)
------------------------   ----------
9999-12-31 오전 00:00:00   9999-12-31

숫자에 대한 버림 처리 예제를 살펴보겠습니다.

SELECT TRUNC (55555.55555, 5) "5",
       TRUNC (55555.55555, 4) "4",
       TRUNC (55555.55555, 3) "3",
       TRUNC (55555.55555, 2) "2",
       TRUNC (55555.55555, 1) "1",
       TRUNC (55555.55555, 0) "0",
       TRUNC (55555.55555, -1) "-1",
       TRUNC (55555.55555, -2) "-2",
       TRUNC (55555.55555, -3) "-3",
       TRUNC (55555.55555, -4) "-4",
       TRUNC (55555.55555, -5) "-5"
  FROM DUAL;

         5          4          3          2          1          0         -1         -2         -3         -4         -5
----------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
55555.55555 55555.5555  55555.555   55555.55    55555.5      55555      55550      55500      55000      50000          0

원 단위 절사

오라클 데이터베이스를 이용할 때에, 원단위를 절사하여 표시할 경우가 있을 것입니다. 나만의 함수를 만드는 방법도 있겠으나, TRUNC 내장 함수를 통해 간단히 만드는 방법도 있답니다. 다음의 예제를 참고해 주세요. 각각 1원 단위, 10원 단위, 100원 단위 절사를 보여드리겠습니다.

TRUNC 함수

TRUNC 함수는 인수가 2개이며, 첫 번째 인수는 절사의 대상이 되는 값, 두 번째 인수는 절사 위치를 지정합니다. 다음과 같이 두 번째 인수를 음수로 지정하면 원 단위를 절사할 수 있습니다. (기본적인 용도는 양수값을 입력하여 소수점을 버림 처리 하는 기능으로 사용합니다.)

SELECT TRUNC(123456, -1) FROM DUAL;

TRUNC(123456,-1)
----------------
          123450

-1을 입력하여 1원 단위 절사

SELECT TRUNC(123456, -2) FROM DUAL;

TRUNC(123456,-2)
----------------
          123400

-2을 입력하여 10원 단위 절사

SELECT TRUNC(123456, -3) FROM DUAL;

TRUNC(123456,-3)
----------------
          123000

-3을 입력하여 100원 단위 절사

SELECT TRUNC(123456, -4) FROM DUAL;

TRUNC(123456,-4)
----------------
          120000

-4을 입력하여 1,000원 단위 절사

SELECT TRUNC(123456, -5) FROM DUAL;

TRUNC(123456,-5)
----------------
          100000

-5을 입력하여 10,000원 단위 절사

SELECT TRUNC(123456, -6) FROM DUAL;

TRUNC(123456,-6)
----------------
               0

절사하려는 자리수가 입력한 값을 초과하면 0을 반환합니다.

SELECT TRUNC(123456, 1) FROM DUAL;

TRUNC(123456,1)
---------------
         123456

절사 자리수를 양수로 입력하는 경우, 소수점 이하 자리를 버림처리하는 본래의 용도로 사용할 수 있습니다. 예제 자료는 소수점이 없기에 반환값을 대상과 동일합니다.

소수점 절사

다음과 같이 양수의 자리수를 준비해 보았습니다. TRUNC는 버림 함수이며, 반올림과 올림 함수는 따로 있답니다.

SELECT TRUNC(123.456, 0) FROM DUAL;

TRUNC(123.456,0)
----------------
             123

0을 입력하면 소수점을 모두 버립니다.

SELECT TRUNC(123.456, 1) FROM DUAL;

TRUNC(123.456,1)
----------------
           123.4

1을 입력하면 소수 1번 째 자리 미만을 버립니다.

SELECT TRUNC(123.456, 2) FROM DUAL;

TRUNC(123.456,2)
----------------
          123.45

2을 입력하면 소수 2번 째 자리 미만을 버립니다.

SELECT TRUNC(123.456, 3) FROM DUAL;

TRUNC(123.456,3)
----------------
         123.456

3을 입력하면 소수 3번 째 자리 미만을 버립니다.

SELECT TRUNC(123.456, 4) FROM DUAL;

TRUNC(123.456,4)
----------------
         123.456

소수점 자리수보다 큰 값을 버리는 자리수로 지정하면, 입력한 값과 동일합니다.

Ceil 함수, 올림

Ceil

이번에는 Ceil 함수를 통해 올림 처리를 해보도록 하겠습니다. 문법은 다음과 같습니다~

--CEIL syntax

CEIL(n)
n 이상 정수 중에 가장 작은 값을 반환합니다.

문법을 보는 것만으로는 Ceil 함수를 바로 이해하기 힘들 수가 있습니다. 그리하여 좌표 개념을 기억하면 Ceil 함수를 기억하기 편리할 것입니다! 아, 그리고 Ceil은 Ceiling의 약자이며 천장, 최대 한계(상한) 같은 뜻을 포함하고 있어요. 다음의 자료를 살펴봅시다.

CEIL 함수

CEIL 의 경우 n 이상 가장 작은 정수값이라 하였습니다. 예제 자료를 보며 안내해드리겠습니다~

  • 첫 번째 동그라미가 대략 -1.8 이라 가정하면 그보다 큰 정수는 -1 일 것입니다.
  • 두 번째 동그라미가 대략 -0.3 으로 가정하면 그보다 큰 정수는 0 입니다.
  • 세 번째 동그라미가 대략 1.1 로 가정하면 그보다 큰 정수는 2 입니다.

아래는 출력결과물 표본입니다.

ceil 올림
오라클 올림 방법

CEIL 입니다. ; n 이상 정수 중에 가장 작은 값을 반환한다는 것, 기억하세요~

SET SERVEROUTPUT ON;

DECLARE
   L_N_NUM   NUMBER := -5;
BEGIN
   WHILE L_N_NUM <= 5
   LOOP
      DBMS_OUTPUT.PUT_LINE ('CEIL(' || L_N_NUM || ') = ' || CEIL (L_N_NUM));

      L_N_NUM := L_N_NUM + 0.05;
   END LOOP;
END;
/
CEIL(-5) = -5
CEIL(-4.95) = -4
CEIL(-4.9) = -4
CEIL(-4.85) = -4
CEIL(-4.8) = -4
CEIL(-4.75) = -4
CEIL(-4.7) = -4
CEIL(-4.65) = -4
CEIL(-4.6) = -4
CEIL(-4.55) = -4
CEIL(-4.5) = -4
CEIL(-4.45) = -4
CEIL(-4.4) = -4
CEIL(-4.35) = -4
CEIL(-4.3) = -4
CEIL(-4.25) = -4
CEIL(-4.2) = -4
CEIL(-4.15) = -4
CEIL(-4.1) = -4
CEIL(-4.05) = -4
CEIL(-4) = -4
CEIL(-3.95) = -3
CEIL(-3.9) = -3
CEIL(-3.85) = -3
CEIL(-3.8) = -3
CEIL(-3.75) = -3
CEIL(-3.7) = -3
CEIL(-3.65) = -3
CEIL(-3.6) = -3
CEIL(-3.55) = -3
CEIL(-3.5) = -3
CEIL(-3.45) = -3
CEIL(-3.4) = -3
CEIL(-3.35) = -3
CEIL(-3.3) = -3
CEIL(-3.25) = -3
CEIL(-3.2) = -3
CEIL(-3.15) = -3
CEIL(-3.1) = -3
CEIL(-3.05) = -3
CEIL(-3) = -3
CEIL(-2.95) = -2
CEIL(-2.9) = -2
CEIL(-2.85) = -2
CEIL(-2.8) = -2
CEIL(-2.75) = -2
CEIL(-2.7) = -2
CEIL(-2.65) = -2
CEIL(-2.6) = -2
CEIL(-2.55) = -2
CEIL(-2.5) = -2
CEIL(-2.45) = -2
CEIL(-2.4) = -2
CEIL(-2.35) = -2
CEIL(-2.3) = -2
CEIL(-2.25) = -2
CEIL(-2.2) = -2
CEIL(-2.15) = -2
CEIL(-2.1) = -2
CEIL(-2.05) = -2
CEIL(-2) = -2
CEIL(-1.95) = -1
CEIL(-1.9) = -1
CEIL(-1.85) = -1
CEIL(-1.8) = -1
CEIL(-1.75) = -1
CEIL(-1.7) = -1
CEIL(-1.65) = -1
CEIL(-1.6) = -1
CEIL(-1.55) = -1
CEIL(-1.5) = -1
CEIL(-1.45) = -1
CEIL(-1.4) = -1
CEIL(-1.35) = -1
CEIL(-1.3) = -1
CEIL(-1.25) = -1
CEIL(-1.2) = -1
CEIL(-1.15) = -1
CEIL(-1.1) = -1
CEIL(-1.05) = -1
CEIL(-1) = -1
CEIL(-.95) = 0
CEIL(-.9) = 0
CEIL(-.85) = 0
CEIL(-.8) = 0
CEIL(-.75) = 0
CEIL(-.7) = 0
CEIL(-.65) = 0
CEIL(-.6) = 0
CEIL(-.55) = 0
CEIL(-.5) = 0
CEIL(-.45) = 0
CEIL(-.4) = 0
CEIL(-.35) = 0
CEIL(-.3) = 0
CEIL(-.25) = 0
CEIL(-.2) = 0
CEIL(-.15) = 0
CEIL(-.1) = 0
CEIL(-.05) = 0
CEIL(0) = 0
CEIL(.05) = 1
CEIL(.1) = 1
CEIL(.15) = 1
CEIL(.2) = 1
CEIL(.25) = 1
CEIL(.3) = 1
CEIL(.35) = 1
CEIL(.4) = 1
CEIL(.45) = 1
CEIL(.5) = 1
CEIL(.55) = 1
CEIL(.6) = 1
CEIL(.65) = 1
CEIL(.7) = 1
CEIL(.75) = 1
CEIL(.8) = 1
CEIL(.85) = 1
CEIL(.9) = 1
CEIL(.95) = 1
CEIL(1) = 1
CEIL(1.05) = 2
CEIL(1.1) = 2
CEIL(1.15) = 2
CEIL(1.2) = 2
CEIL(1.25) = 2
CEIL(1.3) = 2
CEIL(1.35) = 2
CEIL(1.4) = 2
CEIL(1.45) = 2
CEIL(1.5) = 2
CEIL(1.55) = 2
CEIL(1.6) = 2
CEIL(1.65) = 2
CEIL(1.7) = 2
CEIL(1.75) = 2
CEIL(1.8) = 2
CEIL(1.85) = 2
CEIL(1.9) = 2
CEIL(1.95) = 2
CEIL(2) = 2
CEIL(2.05) = 3
CEIL(2.1) = 3
CEIL(2.15) = 3
CEIL(2.2) = 3
CEIL(2.25) = 3
CEIL(2.3) = 3
CEIL(2.35) = 3
CEIL(2.4) = 3
CEIL(2.45) = 3
CEIL(2.5) = 3
CEIL(2.55) = 3
CEIL(2.6) = 3
CEIL(2.65) = 3
CEIL(2.7) = 3
CEIL(2.75) = 3
CEIL(2.8) = 3
CEIL(2.85) = 3
CEIL(2.9) = 3
CEIL(2.95) = 3
CEIL(3) = 3
CEIL(3.05) = 4
CEIL(3.1) = 4
CEIL(3.15) = 4
CEIL(3.2) = 4
CEIL(3.25) = 4
CEIL(3.3) = 4
CEIL(3.35) = 4
CEIL(3.4) = 4
CEIL(3.45) = 4
CEIL(3.5) = 4
CEIL(3.55) = 4
CEIL(3.6) = 4
CEIL(3.65) = 4
CEIL(3.7) = 4
CEIL(3.75) = 4
CEIL(3.8) = 4
CEIL(3.85) = 4
CEIL(3.9) = 4
CEIL(3.95) = 4
CEIL(4) = 4
CEIL(4.05) = 5
CEIL(4.1) = 5
CEIL(4.15) = 5
CEIL(4.2) = 5
CEIL(4.25) = 5
CEIL(4.3) = 5
CEIL(4.35) = 5
CEIL(4.4) = 5
CEIL(4.45) = 5
CEIL(4.5) = 5
CEIL(4.55) = 5
CEIL(4.6) = 5
CEIL(4.65) = 5
CEIL(4.7) = 5
CEIL(4.75) = 5
CEIL(4.8) = 5
CEIL(4.85) = 5
CEIL(4.9) = 5
CEIL(4.95) = 5
CEIL(5) = 5

Floor 함수, 내림

FLOOR

Floor 함수는 내림처리를 하는 데 사용할 수 있으며, 문법은 다음과 같습니다.

FLOOR(n)
n 이하 정수 중에 가장 큰 값을 반환합니다.

FLOOR 는 아까 안내해드린 함수와 반대로 생각하면 된답니다! FLOOR 입니다. > n 이하 정수 중에 가장 큰 값을 반환합니다. FLOOR(-4.05) 는 이하 정수 중 가장 큰 값이 -5 입니다. 상기 좌표를 생각하면 이해하기 쉬울 것입니다. 내림함수입니다, FLOOR 예시 자료를 보여드리겠습니다.

SET SERVEROUTPUT ON;

DECLARE
   L_N_NUM   NUMBER := -5;
BEGIN
   WHILE L_N_NUM <= 5
   LOOP
      DBMS_OUTPUT.PUT_LINE ('FLOOR(' || L_N_NUM || ') = ' || FLOOR (L_N_NUM));

      L_N_NUM := L_N_NUM + 0.05;
   END LOOP;
END;
/
FLOOR(-5) = -5
FLOOR(-4.95) = -5
FLOOR(-4.9) = -5
FLOOR(-4.85) = -5
FLOOR(-4.8) = -5
FLOOR(-4.75) = -5
FLOOR(-4.7) = -5
FLOOR(-4.65) = -5
FLOOR(-4.6) = -5
FLOOR(-4.55) = -5
FLOOR(-4.5) = -5
FLOOR(-4.45) = -5
FLOOR(-4.4) = -5
FLOOR(-4.35) = -5
FLOOR(-4.3) = -5
FLOOR(-4.25) = -5
FLOOR(-4.2) = -5
FLOOR(-4.15) = -5
FLOOR(-4.1) = -5
FLOOR(-4.05) = -5
FLOOR(-4) = -4
FLOOR(-3.95) = -4
FLOOR(-3.9) = -4
FLOOR(-3.85) = -4
FLOOR(-3.8) = -4
FLOOR(-3.75) = -4
FLOOR(-3.7) = -4
FLOOR(-3.65) = -4
FLOOR(-3.6) = -4
FLOOR(-3.55) = -4
FLOOR(-3.5) = -4
FLOOR(-3.45) = -4
FLOOR(-3.4) = -4
FLOOR(-3.35) = -4
FLOOR(-3.3) = -4
FLOOR(-3.25) = -4
FLOOR(-3.2) = -4
FLOOR(-3.15) = -4
FLOOR(-3.1) = -4
FLOOR(-3.05) = -4
FLOOR(-3) = -3
FLOOR(-2.95) = -3
FLOOR(-2.9) = -3
FLOOR(-2.85) = -3
FLOOR(-2.8) = -3
FLOOR(-2.75) = -3
FLOOR(-2.7) = -3
FLOOR(-2.65) = -3
FLOOR(-2.6) = -3
FLOOR(-2.55) = -3
FLOOR(-2.5) = -3
FLOOR(-2.45) = -3
FLOOR(-2.4) = -3
FLOOR(-2.35) = -3
FLOOR(-2.3) = -3
FLOOR(-2.25) = -3
FLOOR(-2.2) = -3
FLOOR(-2.15) = -3
FLOOR(-2.1) = -3
FLOOR(-2.05) = -3
FLOOR(-2) = -2
FLOOR(-1.95) = -2
FLOOR(-1.9) = -2
FLOOR(-1.85) = -2
FLOOR(-1.8) = -2
FLOOR(-1.75) = -2
FLOOR(-1.7) = -2
FLOOR(-1.65) = -2
FLOOR(-1.6) = -2
FLOOR(-1.55) = -2
FLOOR(-1.5) = -2
FLOOR(-1.45) = -2
FLOOR(-1.4) = -2
FLOOR(-1.35) = -2
FLOOR(-1.3) = -2
FLOOR(-1.25) = -2
FLOOR(-1.2) = -2
FLOOR(-1.15) = -2
FLOOR(-1.1) = -2
FLOOR(-1.05) = -2
FLOOR(-1) = -1
FLOOR(-.95) = -1
FLOOR(-.9) = -1
FLOOR(-.85) = -1
FLOOR(-.8) = -1
FLOOR(-.75) = -1
FLOOR(-.7) = -1
FLOOR(-.65) = -1
FLOOR(-.6) = -1
FLOOR(-.55) = -1
FLOOR(-.5) = -1
FLOOR(-.45) = -1
FLOOR(-.4) = -1
FLOOR(-.35) = -1
FLOOR(-.3) = -1
FLOOR(-.25) = -1
FLOOR(-.2) = -1
FLOOR(-.15) = -1
FLOOR(-.1) = -1
FLOOR(-.05) = -1
FLOOR(0) = 0
FLOOR(.05) = 0
FLOOR(.1) = 0
FLOOR(.15) = 0
FLOOR(.2) = 0
FLOOR(.25) = 0
FLOOR(.3) = 0
FLOOR(.35) = 0
FLOOR(.4) = 0
FLOOR(.45) = 0
FLOOR(.5) = 0
FLOOR(.55) = 0
FLOOR(.6) = 0
FLOOR(.65) = 0
FLOOR(.7) = 0
FLOOR(.75) = 0
FLOOR(.8) = 0
FLOOR(.85) = 0
FLOOR(.9) = 0
FLOOR(.95) = 0
FLOOR(1) = 1
FLOOR(1.05) = 1
FLOOR(1.1) = 1
FLOOR(1.15) = 1
FLOOR(1.2) = 1
FLOOR(1.25) = 1
FLOOR(1.3) = 1
FLOOR(1.35) = 1
FLOOR(1.4) = 1
FLOOR(1.45) = 1
FLOOR(1.5) = 1
FLOOR(1.55) = 1
FLOOR(1.6) = 1
FLOOR(1.65) = 1
FLOOR(1.7) = 1
FLOOR(1.75) = 1
FLOOR(1.8) = 1
FLOOR(1.85) = 1
FLOOR(1.9) = 1
FLOOR(1.95) = 1
FLOOR(2) = 2
FLOOR(2.05) = 2
FLOOR(2.1) = 2
FLOOR(2.15) = 2
FLOOR(2.2) = 2
FLOOR(2.25) = 2
FLOOR(2.3) = 2
FLOOR(2.35) = 2
FLOOR(2.4) = 2
FLOOR(2.45) = 2
FLOOR(2.5) = 2
FLOOR(2.55) = 2
FLOOR(2.6) = 2
FLOOR(2.65) = 2
FLOOR(2.7) = 2
FLOOR(2.75) = 2
FLOOR(2.8) = 2
FLOOR(2.85) = 2
FLOOR(2.9) = 2
FLOOR(2.95) = 2
FLOOR(3) = 3
FLOOR(3.05) = 3
FLOOR(3.1) = 3
FLOOR(3.15) = 3
FLOOR(3.2) = 3
FLOOR(3.25) = 3
FLOOR(3.3) = 3
FLOOR(3.35) = 3
FLOOR(3.4) = 3
FLOOR(3.45) = 3
FLOOR(3.5) = 3
FLOOR(3.55) = 3
FLOOR(3.6) = 3
FLOOR(3.65) = 3
FLOOR(3.7) = 3
FLOOR(3.75) = 3
FLOOR(3.8) = 3
FLOOR(3.85) = 3
FLOOR(3.9) = 3
FLOOR(3.95) = 3
FLOOR(4) = 4
FLOOR(4.05) = 4
FLOOR(4.1) = 4
FLOOR(4.15) = 4
FLOOR(4.2) = 4
FLOOR(4.25) = 4
FLOOR(4.3) = 4
FLOOR(4.35) = 4
FLOOR(4.4) = 4
FLOOR(4.45) = 4
FLOOR(4.5) = 4
FLOOR(4.55) = 4
FLOOR(4.6) = 4
FLOOR(4.65) = 4
FLOOR(4.7) = 4
FLOOR(4.75) = 4
FLOOR(4.8) = 4
FLOOR(4.85) = 4
FLOOR(4.9) = 4
FLOOR(4.95) = 4
FLOOR(5) = 5

댓글