숫자형 함수
1. 수학적 함수 ( ABS, SIGN, POWER, SQRT ... 등 )
- ABS(n) : n의 절댓값
- SIGN : n의 부호 ( 음수 : -1, 양수 : 1, 0 : 0 )
- POWER( n, e ) : n의 e승 값 반환
- SQRT( n ) : n의 루트 값
SELECT ABS(-100),
ABS(0.000001),
SIGN(10000000),
SIGN(-10000000),
SIGN(0.0000001),
SIGN(-0.0000001),
SIGN(0),
POWER(2,10),
SQRT(1024)
FROM DUAL;
-- 출력 결과 --
2. 최댓값과 최솟값
- GREATEST, LEAST : 주어진 자료 중 최댓값과 최솟값을 구함
- MAX, MINIMUN : 불특정한 자료 중 최댓값과 최솟값을 구함
SELECT GREATEST(20,40,5,70),
LEAST(20,40,5,70)
FROM DUAL;
-- 출력 결과 --
3. ROUND, TRUNC
- 주어진 숫자 자료를 반올림 ( ROUND ) 또는 자리버림 ( TRUNC ) 연산 후 결과값 반환
1) ROUND ( n, i )
- i 가 양수이면 주어진 자료 n에서 소숫점 이하 i+1번째 자리에서 반올림하여 i번째 수까지 반환
- i 가 음수이면 주어진 자료 n에서 정수부의 i번째 자리에서 반올림하여 결과 반환
- i 를 생략하면 0 으로 간주
2) TRUNC ( n, i )
- i 가 양수이면 주어진 자료 n에서 소숫점 이하 i+1번째 자리에서 자리버림하여 i번째 수까지 반환
- i 가 음수이면 주어진 자료 n에서 정수부의 i번째 자리에서 자리버림하여 결과 반환
- i 를 생략하면 0 으로 간주
ex) 사원테이블(employees)의 자료를 이용하여 이번달 급여를 조회하시오.
보너스 = 본봉의 13%
지급액 = 본봉 + 보너스
Alias는 사원번호, 사원명, 본봉, 보너스 , 지급액이다.
단, 보너스 및 지급액은 소수 첫 자리 까지 나타내시오.
SELECT employee_id AS 사원번호,
emp_name AS 사원명,
salary AS 본봉,
ROUND(salary*0.3, 1) AS 보너스,
salary + ROUND(salary*0.3, 1) AS 지급액
FROM employees;
-- 출력 결과 --
4. MOD, REMAINDER
- 나머지 값을 반환
1) MOD ( c, n )
- 주어진 수 c를 n으로 나눈 나머지 반환
- Java의 ' % '연산자와 동일 기능
2) REMAINDER ( c, n )
- 주어진 수 c를 n으로 나눈 나머지 반환
- 내부적으로 MOD와 다른 방법으로 처리하여 다른 결과 반환
- MOD : 나머지 = c - n * FLOOR (c/n)
REMAINDER : 나머지 = c - n * ROUND (c/n)
ex) 13/5의 나머지
i) mod : 13 - 5*floor(13/5)
13 - 5*floor(2.6)
13 - 5*2 => 3
ii) remainder
13 - 5*round(13/5)
13 - 5*round(2.6)
13 - 5*3 => -2
SELECT MOD(13,5),
REMAINDER(13,5)
FROM DUAL;
-- 출력 결과 --
5. CEIL ( n ) , FLOOR ( n )
- 주어진 수 n에 가장 근접한 정수를 반환
- CEIL 은 n과 같거나 큰 수 중 가장 작은 정수
- FLOOR 는 n과 같거나 작은 수 중 가장 큰 정수 ( n을 초과할 수 없음 )
ex) CEIL(23.54) -> 24 / CEIL(-23.54) -> -23
FLOOR(23.54) -> 23 / FLOOR(-23.54) -> -24
6. WIDTH_BUCKET
- 주어진 최솟값과 최댓값을 몇개의 그룹으로 나누고 제시된 값이 어느 그룹에 속하는 지를 반환
WIDTH_BUCKET ( c, min, max, b )
- c : 주어진 수
- min : 구간의 하한 값
- max : 구간의 상한 값
- b : 구간의 수
ex) 사원테이블(employees)에서 사원의 급여에 따른 등급을 구하여 출력하시오.
급여를 2000부터 22000까지 9개 등급으로 나누고 급여가 많은 사원이 작은 등급을 부여받도록 하시오.
Alias는 사원번호, 사원명, 급여, 등급이다.
SELECT employee_id AS 사원번호,
emp_name AS 사원명,
salary AS 급여,
WIDTH_BUCKET(salary, 22000, 2000, 9) || '등급' AS 등급
FROM employees;
-- 출력 결과 --
'💻Programming > Oracle' 카테고리의 다른 글
[Oracle/오라클] NULL처리 함수 (0) | 2021.03.15 |
---|---|
[Oracle/오라클] 테이블 조인 (내부조인) (0) | 2021.03.15 |
[Oracle/오라클] 문자열 결합 연산자/함수( || / CONCAT ) (0) | 2021.03.12 |
[Oracle/오라클] 연산자 (0) | 2021.03.12 |
[Oracle/오라클] 데이터 조작 명령문 (SELECT문) (0) | 2021.03.11 |
댓글