서론
SQL에서 숫자를 반올림하거나 올림해야 할 때, 보통 ROUND와 CEIL을 사용합니다. 최근 쿼리 문제를 풀다가 ROUND(숫자, 0)과 CEIL(숫자)을 사용했을 때 결과가 다르게 나오는 것을 발견했습니다. 이에 대해 정확한 차이점을 이해하고자 이 글을 작성하게 되었습니다.
본론
ROUND 함수란?
ROUND 함수는 숫자를 반올림하는 함수입니다. 기본적으로 다음과 같은 형식을 가집니다.
ROUND(숫자, 소수 자릿수)
- 소수 자릿수를 지정하면 해당 자릿수까지 반올림됩니다.
- 소수 자릿수를 0으로 설정하면 정수 단위로 반올림됩니다.
- 지정하지 않으면 기본적으로 0으로 처리됩니다.
예제
SELECT ROUND(4.3, 0); -- 결과: 4
SELECT ROUND(4.6, 0); -- 결과: 5
SELECT ROUND(4.567, 2); -- 결과: 4.57
SELECT ROUND(-4.5, 0); -- 결과: -4
SELECT ROUND(-4.6, 0); -- 결과: -5
CEIL 함수란?
CEIL(또는 CEILING) 함수는 주어진 숫자를 올림하여 정수로 반환하는 함수입니다. 즉, 소수점 이하 값이 존재하면 무조건 큰 정수로 변환됩니다.
예제
SELECT CEIL(4.3); -- 결과: 5
SELECT CEIL(4.6); -- 결과: 5
SELECT CEIL(-4.6); -- 결과: -4
SELECT CEIL(-4.5); -- 결과: -4
ROUND와 CEIL의 차이
함수 동작 방식
ROUND | 가장 가까운 정수로 반올림 |
CEIL | 무조건 큰 정수로 올림 |
차이점을 보여주는 예제
SELECT ROUND(-4.6, 0); -- 결과: -5
SELECT CEIL(-4.6); -- 결과: -4
- ROUND는 가장 가까운 정수로 반올림합니다.
- CEIL은 무조건 큰 정수로 변환하므로, 음수일 경우 올림된 값이 절댓값이 작아지는 방향으로 동작합니다.
요약
SQL에서 ROUND와 CEIL은 숫자를 처리하는 방식이 다릅니다.
- ROUND는 가장 가까운 정수로 반올림합니다.
- CEIL은 무조건 큰 정수로 올림합니다.
- 특히 음수에서 차이가 나타날 수 있으므로 주의해야 합니다.
'데이터 공부 > SQL' 카테고리의 다른 글
[SQL, 가설 검증] 서울숲 요일별 대기오염도 계산하기 (0) | 2025.04.16 |
---|---|
[초보자를 위한 BigQuery 입문] SQL 쿼리 잘 작성하기 (1) | 2025.01.21 |
[프로그래머스] 조건에 맞는 사용자 정보 조회하기 CONCAT_WS (0) | 2024.10.14 |
[LeetCode] 1204.Last Person to Fit in the Bus (From 절 Subquery, 누적합) (0) | 2024.08.22 |
[LeetCode] 550. Game Play Analysis IV (Where절 Subquery) (0) | 2024.08.13 |