본문 바로가기
ORACLE

오라클 CEIL, TRUNC, ROUND 함수 차이점 및 예시

by 밥밥밥 2025. 3. 28.

오라클에서 CEIL, TRUNC, ROUND 함수는 숫자를 특정 방식으로 반올림하거나 잘라내는 데 사용됩니다. 각 함수의 차이점과 설명은 다음과 같습니다.

1. CEIL 함수

CEIL 함수는 주어진 숫자를 가장 가까운 정수로 올리는 함수입니다. 이 함수는 숫자가 이미 정수라면 그래로 반환하고, 숫자가 실수라면 다음 정수로 올립니다.

문법)

CEIL(number)

예시)

SELECT CEIL(3.7) AS RESULT1, 
       CEIL(-3.7) AS RESULT2, 
       CEIL(5) AS RESULT3
FROM DUAL;

결과)

RSSULT1 RESULT2 RESULT3
4 -3 5

특정구간을 그룹화 할때도 CEIL 함수를 사용하면 유용합니다. 예를 들어 1~10 사이의 숫자 10개 있을때 2개 단위로 그룹화 한다면 아래의 예시와 같이 사용하면 됩니다.

예시)

SELECT CEIL(LEVEL / 2) AS GROUP_ID, LEVEL AS NUM
FROM DUAL
CONNECT BY LEVEL <= 10;

설명)

1. LEVEL: CONNECT BY 절을 사용하여 1부터 10까지의 숫자를 생성합니다.
2. CEIL(LEVEL / 2): 숫자를 2개씩 묶기 위해 그룹 ID를 생성합니다. 예를 들어, 1~2는 그룹 1, 3~4은 그룹 2로 묶입니다.
3. CONNECT BY LEVEL <= 10: LEVEL이 10까지 증가하도록 설정합니다.
결과는 다음과 같이 출력됩니다:

결과)

GROUP_ID NUM
1 1
1 2
2 3
2 4
3 5
3 6
4 7
4 8
5 9
5 10

2. TRUNC 함수

TRUNC 함수는 주어진 숫자의 소수점 이하를 자르거나 버림하는 함수입니다. 기본적으로 소수점 이하를 모두 제거하며, 옵션으로 특정 자리까지 남길 수 있습니다.

문법)

TRUNC(number, [decimal_places])

예시)

SELECT TRUNC(3.7) AS RESULT1, 
       TRUNC(-3.7) AS RESULT2, 
       TRUNC(3.7, 1) AS RESULT3
FROM DUAL;

결과)

RSSULT1 RESULT2 RESULT3
3 -3 3.7

1.RESULT1: 3.7의 소수점 이하를 모두 제거하여 3이 반환됩니다.
2.RESULT2: -3.7의 소수점 이하를 모두 제거하여 -3이 반환됩니다.
3.RESULT3: 3.7에서 첫 번째 소수점 자리까지 남겨서 3.7이 반환됩니다. 그러나 TRUNC(3.7, 1)은 실제로 3.7을 반환하지 않고 3.7에서 첫 번째 소수점 자리까지 남기므로 3.7이 반환됩니다. 정확히는 TRUNC(3.7, 1)은 3.7을 그대로 반환하는 것이 아니라, 3.7에서 첫 번째 소수점 자리까지 남기므로 3.7이 반환됩니다. 이는 TRUNC가 소수점 이하를 버리기 때문에, 3.7에서 첫 번째 소수점 자리까지 남기면 3.7이 됩니다.

3. ROUND 함수

ROUND 함수는 주어진 숫자를 특정 자리에서 반올림하는 함수입니다. 반올림 규칙에 따라 숫자가 반올림됩니다.

문법)

ROUND(number, [decimal_places])

number: 숫자입니다.
decimal_places: 옵션으로, 몇 번째 자리에서 반올림할지 지정할 수 있습니다. 생략하면 소수점 이하를 모두 반올림하여 정수로 반환합니다.

예시)

SELECT ROUND(3.7) AS RESULT1, 
       ROUND(-3.7) AS RESULT2, 
       ROUND(3.7, 1) AS RESULT3
FROM DUAL;

결과)

RSSULT1 RESULT2 RESULT3
4 -4 3.7

1.RESULT1: 3.7을 정수로 반올림하여 4가 반환됩니다.
2.RESULT2: -3.7을 정수로 반올림하여 -4가 반환됩니다.
RESULT3: 3.7을 첫 번째 소수점 자리에서 반올림하여 3.7이 반환됩니다. 이는 3.7에서 첫 번째 소수점 자리까지 반올림하면 3.7이 그대로 유지되기 때문입니다.

요약

CEIL: 숫자를 가장 가까운 정수로 올림.
TRUNC: 숫자의 소수점 이하를 자름.
ROUND: 숫자를 특정 자리에서 반올림.

각 함수는 특정 상황에서 유용하게 사용될 수 있습니다. 예를 들어, CEIL은 특정 단위로 묶을 때, TRUNC은 소수점 이하를 버릴 때, ROUND은 반올림이 필요한 경우에 사용됩니다.