DB

[MySQL] 숫자 반올림 함수: ROUND, CEIL, FLOOR 완전 정리

인생아 2025. 7. 21. 12:50
반응형

MySQL에는 숫자를 다룰 때 유용한 반올림 함수가 있다. 대표적으로 ROUND(), CEIL(), FLOOR() 세 가지 함수가 있으며, 각각 일반 반올림, 올림, 내림 용도로 사용된다.

🔹 ROUND(): 지정한 자릿수로 반올림

문법

ROUND(number [, decimals])
  • decimals를 생략하면 정수 단위로 반올림
  • decimals를 지정하면 소수점 이하 n자리까지 반올림

예제

SELECT ROUND(123.456);         -- 결과: 123
SELECT ROUND(123.456, 1);      -- 결과: 123.5
SELECT ROUND(123.456, 2);      -- 결과: 123.46
SELECT ROUND(-1.5);            -- 결과: -2 (MySQL은 음수도 반올림)

활용

-- 결제 금액 소수점 반올림
SELECT ROUND(price * 1.1, 0) AS final_price
FROM products;
반응형

🔸 CEIL(): 올림 (무조건 위로 반올림)

문법

CEIL(number)
  • 소수점이 존재하면 무조건 큰 정수로 올림
  • 음수일 경우에는 더 작은 수로 간다

예제

SELECT CEIL(123.1);        -- 결과: 124
SELECT CEIL(123.9);        -- 결과: 124
SELECT CEIL(-1.2);         -- 결과: -1
SELECT CEIL(-1.8);         -- 결과: -1

활용

-- 페이지 개수 계산 (게시물 수 48개, 페이지당 10개)
SELECT CEIL(48 / 10);      -- 결과: 5

🔸 FLOOR(): 내림 (무조건 아래로 내림)

문법

FLOOR(number)
  • 소수점이 존재하면 무조건 작은 정수로 내림
  • 음수일 경우에는 더 큰 수로 간다

예제

SELECT FLOOR(123.9);       -- 결과: 123
SELECT FLOOR(-1.2);        -- 결과: -2
SELECT FLOOR(-1.9);        -- 결과: -2

활용

-- 일정 수치를 넘는 금액을 내림 계산
SELECT FLOOR(amount / 100) * 100
FROM payment_log;
반응형

🧠 세 함수 비교 요약

함수명 기능 양수 예시 음수 예시
ROUND 일반 반올림 1.5 → 2 -1.5 → -2
CEIL 무조건 올림 1.1 → 2 -1.1 → -1
FLOOR 무조건 내림 1.9 → 1 -1.9 → -2

⚠️ 실무 주의사항

  • ROUND()는 음수도 반올림 기준을 동일하게 적용한다 (0.5 이상은 절댓값 기준으로 올림).
  • CEIL()과 FLOOR()는 반올림 기준이 아닌, 무조건적인 방향성으로 동작한다.
  • 수량 계산, 페이지 계산, 결제 금액 정리에 자주 쓰이므로 목적에 따라 적절한 함수 선택이 중요하다.

💡 실무 조합 예시

금액 반올림 후 천 단위 내림 처리

SELECT FLOOR(ROUND(price * 1.1, 0) / 1000) * 1000 AS rounded_price
FROM products;

배송비 조건 계산

-- 50,000원 이상이면 배송비 무료
SELECT IF(CEIL(total_price) >= 50000, 0, 3000) AS delivery_fee
FROM orders;

🔗 참고 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html

 

반응형