데이터베이스 연구실.log

숫자 함수

반올림(ROUND), 버림(TRUNC), 나머지(MOD) 숫자 함수의 사용법과 실습의 활용 예(별표 막대, 홀수 판별, 그룹 나누기)

ROUNDTRUNCMOD%

#핵심 요약

ROUND(값, 자리)는 반올림, TRUNC(값, 자리)는 버림, MOD(값, 나눌 수)는 나눈 나머지를 돌려줌

자리가 1이면 소수점 첫째 자리까지 남기고, -2면 십의 자리에서 반올림해 백 단위로 맞춤

PostgreSQL은 MOD 대신 % 연산자를 쓸 수 있음

#개념과 동작 원리

함수 예 설명
ROUND(876.567, 1) 소수점 첫째 자리까지 반올림
ROUND(sal, -2) 십의 자리에서 반올림
TRUNC(876.567, 1) 소수점 첫째 자리는 두고 그 뒤는 버림
TRUNC(3/2) 실습의 힌트 문장
몫의 정수 부분
MOD(11, 2) 11을 2로 나눈 나머지

#주요 용어와 구성 요소

구문 의미
자리 인수 양수는 소수부, 0은 정수부, 음수는 소수점 왼쪽 자리를 기준으로 처리함
나머지 정수의 나눗셈 몫과 나머지를 구분하며 음수 입력의 부호 규칙을 확인해야 함

#필수 명령어 또는 SQL

항목 실행 조건
작업 대상 dual의 숫자 표현식, emp.sal, empno, emp19.age
필요 권한 대상 테이블 조회 권한이 있는 계정
바꿀 입력값 숫자 값, 자리 수, 제수와 대상 테이블, 열
결과 해석 반올림, 절삭, 나머지 계산 결과
SQL Developer 또는 SQL*Plus조회만 함
SELECT 876.567, ROUND(876.567, 1), TRUNC(876.567, 1)
  FROM dual;

SELECT ename, sal, ROUND(sal, -2)
  FROM emp;

결과 해석:

월급 100을 별 하나로 그리기:

SQL Developer 또는 SQL*Plus조회만 함
SELECT ename, ROUND(sal, -2), ROUND(sal, -2) / 100,
       LPAD(' ', ROUND(sal, -2) / 100, '*')
  FROM emp;

결과 해석:

실습에서는 이 결과에서 "별이 하나 모자란다"고 적었음
LPAD는 결과 전체 길이를 두 번째 인수로 맞추므로, 공백 한 글자가 그 길이에 포함되어 별이 하나 적게 나옴
수업 자료에 고친 답은 없음
LPAD는 문자 함수에 있음

나머지로 홀수 판별, 그룹 나누기:

SQL Developer 또는 SQL*Plus조회만 함
SELECT MOD(11, 2) FROM dual;

SELECT ename, age
  FROM emp19
 WHERE MOD(age, 2) = 1
 ORDER BY age DESC;

SELECT empno, ename, sal
  FROM emp
 WHERE MOD(empno, 3) = 0;
PostgreSQL조회만 함
SELECT ename, age
  FROM emp19
 WHERE age % 2 = 1
 ORDER BY age DESC;

결과 해석: MOD(empno, 3) = 0은 연습 문제의 "야간 급여 정산 배치를 사번 기준 세 그룹으로 나눌 때 0번 그룹"임
0, 1, 2로 세 그룹을 나눌 수 있음

#구문과 옵션 설명

구문 의미
ROUND(n) / TRUNC(n) 자리 인수를 생략하면 0자리 기준임
ROUND와 숫자 타입 NUMBER와 부동소수점 표현은 내부 표현 차이로 반올림 자릿값이 달라질 수 있음
MOD(n2,n1) n1이 0이면 n2를 반환하며 음수 입력에서는 수학적 양의 나머지와 다를 수 있음
PostgreSQL % smallint, integer, bigint, numeric에 제공됨

#사용 조건과 주의사항

나이를 MOD(age, 2) = 1로 분류하는 예는 음수가 아닌 정수 나이를 전제로 함
사번을 세 그룹으로 나누는 설명도 사번의 부호와 정수 조건을 확인해야 함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기