SQL> select round(45.995, 2)
, round(45.995, -2)
, round(645345.995, -2)
from dual;
SQL> select trunc(45.995, 2)
, trunc(45.995, -2)
, trunc(645345.995, -2)
from dual;
SQL> select 7/3, ceil(7/3), floor(7/3)
from dual;
SQL> select empno, mod(empno, 2), mod(empno, 3) from emp;
SQL> select empno, mod(empno, 2), mod(empno, 3) from emp where mod(empno, 2) = 0; --> 사번이 짝수
SQL> select empno, mod(empno, 2), mod(empno, 3) from emp where mod(empno, 2) = 1; --> 사번이 홀수
SQL> select empno, mod(empno, 2), mod(empno, 3) from emp where mod(empno, 3) = 0; --> 사번이 3의 배수
문제) 월급을 * 를 이용해서 수평 막대 그래프로 표현하세요.
* 한개가 100입니다. 필요하면 올림을 수행하세요.
ENAME ...... SAL_GRAPH
------ ...... ----------------------
SMITH ...... ********
ALLEN ****************
WARD *************
힌트) CEIL, RPAD 함수를 사용하세요
해답)
SQL> select ename, sal, sal/100, ceil(sal/100)
from emp;
↓ ↓ ↓
SQL> col sal_graph format a60
SQL> select ename, sal, rpad('*', ceil(sal/100)) as sal_graph
from emp;
↓ ↓ ↓
SQL> select ename, sal, rpad('*', ceil(sal/100), '*') as sal_graph
from emp;
ROUND (number) 접기
ROUND (number) round_number::= 그림 설명
ROUND함수는 n값을 소수점 이하를 integer를 기준으로 반올림하여 반환한다. 만약 integer를 생략하면,n은 소수점을 반올림한다. 소수점 왼쪽의 정수부를 반올림하기 위해 음수값을 지정할수 있다.
n은 임의의 수치형 또는 수치형으로 변환가능한 비수치형을 지정할수 있다. 인수 integer는 정수이다. 만약 interger를 생략하면, 함수는 인수의 수치형과 같은 데이터형을 반환한다. 만약 interger를 포함하면, 함수는 NUMBER를 반환한다.
NUMBER값의 경우에, n값은 0으로부터 떨어져 반올림 할수 있다.(예를 들어, x.5가 양수일때 x+1, x.5가 음수일때 x-1). BINARY_FLOAT와 BINARY_DOUBLE값에 대하여, 함수는 가장 가까운 짝수값으로 반올림 한다.
다음 예제는 첫번째 소수점으로 반올림(소수점 두번째에서 반올림).
SELECT ROUND(15.193,1) "Round" FROM DUAL;
Round
----------
15.2
다음 예제는 정수에서 첫번째 자리에서 반올림.
SELECT ROUND(15.193,-1) "Round" FROM DUAL;
Round
----------
20
다음 예제는 NUMBER값과 부동소수점 값 사이의 반올림 차이를 설명한다. NUMBER값은 절삭하고(양수값에 대하여), 부동 소수점은 가장 가까운 짝수 값으로 반올림 된다.
SELECT ROUND(1.5), ROUND(2.5) FROM DUAL;
ROUND(1.5) ROUND(2.5)
---------- ----------
2 3
SELECT ROUND(1.5f), ROUND(2.5f) FROM DUAL;
ROUND(1.5F) ROUND(2.5F)
----------- -----------
2.0E+000 2.0E+000 출처:
http://www.statwith.pe.kr/ORACLE/functions120.htm#i78633
접기
TRUNC (number) 접기
TRUNC (number) trunc_number::= 그림 설명
TRUNC(NUMBER)함수는 인수 n1을 소수점 자리 파라미터 n2 이하를 절삭한다.만약 인수 n2를 지정하는 않는 경우, 인수 n1의 소수점 이하를 절삭한다. 만약 인수 n2가 음수인 경우는, 소수점 왼쪽의 n2자리(정수부분)에서 절삭한다.
이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.
다음 예제는 수치를 절삭(두번째 예제는 정수부 일의 자리에서 절삭):
SELECT TRUNC(15.79,1) "Truncate" FROM DUAL;
Truncate
----------
15.7
SELECT TRUNC(15.79,-1) "Truncate" FROM DUAL;
Truncate
----------
10 출처:http://www.statwith.pe.kr/ORACLE/functions185.htm#i79729
접기
CEIL 인수에서 지정한 수치를 올림하여 정수를 구하는 함수이다.
CEIL 접기
CEIL ceil::= 그림 설명 : ceil(n)
CEIL 함수는 인수에서 지정한 수치를 올림하여 정수를 구하는 함수이다. 즉, 인수로 지정한 수치보다 크고 가까운 정수를 반환한다. 음의 수치를 부여하면 음수측의 가장 가까운 정수를 반환한다.
이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다.이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.
다음 예제는 15.7 이상의 가장 작은 정수를 반환 :
SELECT CEIL(15.7) "Ceiling" FROM DUAL;
Ceiling
----------
16 출처:
http://www.statwith.pe.kr/ORACLE/functions016.htm#i97801
접기
FLOOR 지정한 숫자보다 작거나 같은 정수 중에서 최대값을 반환한다
FLOOR 접기
FLOOR floor::= 그림 설명
FLOOR 함수는 지정한 숫자보다 작거나 같은 정수 중에서 최대값을 반환한다.
이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 이 함수는 인수의 수치형 형태와 같은 데이터형을 반환한다.
다음 예제는 15.7보다 작거나 같은 정수 중에서 최대값을 반환.
SELECT FLOOR(15.7) "Floor" FROM DUAL;
Floor
----------
15 출처:
http://www.statwith.pe.kr/ORACLE/functions050.htm#i77449
접기
MOD n2을 n1으로 나눈 나머지값을 반환.
MOD 접기
MOD mod::= 그림 설명
MOD함수는 n2을 n1으로 나눈 나머지값을 반환한다. n1이 0이면, n2를 반환한다.
이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 오라클은 우선 순위가 가장 높은 수치형 인수를 판단하여, 나머지 인수를 그 데이터형에 암묵적으로 변환하고, 그 데이터 형을 반환한다.
다음 예제는 11을 4로 나눈 나머지를 반환.
SELECT MOD(11,4) "Modulus" FROM DUAL;
Modulus
----------
3
This function behaves differently from the classical mathematical modulus function when m
is negative. The classical modulus can be expressed using the MOD
function with this formula:
m - n * FLOOR(m/n)
The following table illustrates the difference between the MOD
function and the classical modulus:
접기