반응형
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
반응형
'DB' 카테고리의 다른 글
| [MySQL] 난수 생성 함수: RAND, UUID 실무 활용법 (0) | 2025.07.22 |
|---|---|
| [MySQL] 나머지와 정수 나눗셈 함수: MOD, DIV 실전 가이드 (0) | 2025.07.22 |
| [MySQL] 최대/최소/중간값: GREATEST, LEAST, INTERVAL 비교 (1) | 2025.07.21 |
| [MySQL] 숫자 절댓값과 부호 함수: ABS, SIGN 활용법 (1) | 2025.07.21 |
| [MySQL] 고급 문자열 함수: FIELD, ELT, FIND_IN_SET 정리 (1) | 2025.07.19 |
| [MySQL] 문자열 인코딩과 포맷 함수: CHAR, ASCII, HEX 등 총정리 (0) | 2025.07.19 |
| [MySQL] 반복, 역순, 공백 함수: REPEAT, REVERSE, SPACE 정리 (1) | 2025.07.19 |
| [MySQL] 대소문자 변환 함수: UPPER, LOWER 실습 가이드 (0) | 2025.07.19 |