number(p, s)
p:precision 정밀도 = 최대 유효숫자 자리수
s:scale 소수점 기준 자릿수 의미
p는 소수점 기준으로 모든 유효숫자 자릿수를 의미한다.
s가 양수이면 소수점 이하. 음수이면 소수점 이상(소수점 기준 왼쪽)
유효숫자 자릿수를 나타낸다.
s에 명시한 숫자 이상의 숫자를 입력하면 s에 명시한 숫자로 반올림 처리
s가 음수이면 소수점 기준으로 왼쪽 자리수만큼 반올림.
s가 p보다 크면 p는 소수점 이하 유효숫자 자릿수를 의미
create table ex2_3 (
col1 number(3) ,
col2 number(3,2) ,
col3 number(5,-2)
);
insert into ex2_3 (col1) values (0.7898); -- 1
insert into ex2_3 (col1) values (99.5); -- 100
insert into ex2_3 (col1) values (1004); -- 오류(정수 3자리)
insert into ex2_3 (col2) values (0.7898); -- 0.79
insert into ex2_3 (col2) values (1.2345); -- 1.23
insert into ex2_3 (col2) values (32); -- 오류(정수부분은 1자리)
insert into ex2_3 (col3) values (12345.2346); -- 12300
insert into ex2_3 (col3) values (12367.2346); -- 12400
insert into ex2_3 (col3) values (1234567.35); -- 1234600
insert into ex2_3 (col3) values (12345678.35); -- 오류(자릿수 오류)
ROUND(n, i)
매개변수 n 을 소수점 기준 ( i+1) 번 째에서 반올림한 결과를 반환 디폴트 0)
N 이 0 일때 i 입력된 숫자에 상관없이 0 을 반환하며 ,
i 가 음수이면 소수점을 기준으로 왼쪽 i 번째에서 반올림이 일어난다.
select round(10.154) --10
, round(10.154) --10
, round(10.154) --10
from dual;
select round(10.154,1) --10.2
, round(10.154,2) --10.15
, round(10.154,3) --10.154
from dual;
select round(0,3) --0
, round(115.155,-1) --120
, round(115.155,-2) --100
from dual;
TRUNC
반올림을 하지 않고 n1을 소수점 기준 n2자리에서 무조건 잘라냄
디폴트 (0)
양수일 때는 소수점 기준으로 오른쪽, 음수일 때는 소수점 기준으로 왼쪽 자리에서 잘라냄
select trunc(115.155) --115
, trunc(115.155,1) --115.1
, trunc(115.155,2) --115.15
, trunc(115.155,3) --115.155
from dual;
ex>
employees 테이블에서
사번, 사원명, 월급, 일당(월급/30) 소수점 셋째자리에서 반올림 하여 일당이 많은 순으로 정렬
사번 사원명 월급 일당
100 Steven King 24000 774.19
102 Lex De Haan 17000 548.39
101 Neena Kochhar 17000 548.39
145 John Russell 14000 451.61
select employee_id, emp_name, salary, round(salary/30,2) as 일급
from employees
order by 4 desc;
'Oracle > SQL' 카테고리의 다른 글
DML(Data Manipulation Language, 데이터조작어) (0) | 2020.06.03 |
---|---|
제약조건 (0) | 2020.06.02 |
시간타입과 NOTNULL (0) | 2020.06.02 |
오라클 제약조건 SQL (0) | 2020.06.02 |
테이블생성 (0) | 2020.06.02 |