- 수학적 함수
- ABS(n) : n의 절댓값 반환
- SIGN(n) : n의 부호에 따라 양수이면 1, 음수이면 -1, 0이면 0을 반환
- COS(n), SIN(n), TAN(n) : 삼각함수의 값 반환
- SQRT(n) : n의 제곱근 반환
- POWER(n, a) : n의 a승 값
- EXP(n) : 지수 함숫값
- GREATEST(n1, n2 [, n3,....]), LEAST(n1, n2[, n3, ....])
- 주어진 자료에서 가장 큰 값(GREATEST), 작은 값(LEAST)을 찾아 반환
- ROUND(n1 [, n2]), TRUNC(n1 [, n2])
- ROUND : 주어진 수 n1의 소수점 이하 n2 + 1번째 자리에서 반올림
- TRUNC : 주어진 수 n1의 소숫점 이하 n2 + 1번째 자리부터 절삭(반올림되지 않음)
- n2가 음수이면 정수 부분의 n2자리에서 반올림(ROUND)또는 절삭(TRUNC) / 0으로 반환
- -1, -10, -100 순으로 1, 10, 100의 자리가 됨
-
SELECT ROUND(123.456, 1) FROM DUAL; //출력 : 123.5 SELECT ROUND(567.899, -2) FROM DUAL; //출력 : 600 SELECT TRUNC(123.456, 1) FROM DUAL; //출력 : 123.4 SELECT TRUNC(567.899, -2) FROM DUAL; //출력 : 500
- n2가 음수, 양수에 관계없이 ROUND는 올림, TRUNC는 버림이 된다.
- MOD(n1, n2)
- n1을 n2로 나눈 나머지를 반환한다
-
SELECT MOD(10, 3) FROM DUAL; //출력 : 1
- REMAINDER(n1, n2)
- n1을 n2로 나눈 나머지를 반환한다
-
SELECT REMAINDER(10, 3) FROM DUAL; //출력 : 1
- MOD와 REMAINDER 모두 나머지를 반환하지만 내부적으로 동작하는 방식이 다르다
- 일반적으로는 MOD를 많이 사용한다
- WIDTH_BUCKET(n1, min, max, block_cnt)
- 하한 값 min과 상한 값 max로 정한 구간을 block_cnt개수의 블록으로 나누었을 때 n1이 속한 구간 순번을 반환
- min, max값은 반대로 대입도 가능하다
- 아래의 코드는 참고를 위해 조인과 케이스 등을 사용하였지만 대략적인 사용방법만 알고 넘어가도록 하자
-
SELECT A.EMP_NAME AS 사원명, C.DEPARTMENT_NAME AS 부서명, B.JOB_TITLE AS 직무명, A.SALARY AS 급여, CASE WHEN WIDTH_BUCKET(A.SALARY, 2000, 20000, 3)=1 THEN '저임금 사원' WHEN WIDTH_BUCKET(A.SALARY, 2000, 20000, 3)=2 THEN '평균임금사원' ELSE '고임금사원' END AS 비고 FROM HR.EMPLOYEES A, HR.JOBS B, HR.DEPARTMENTS C WHERE A.DEPARTMENT_ID=C.DEPARTMENT_ID AND A.JOB_ID=B.JOB_ID ORDER BY 4;
위와 같이 출력이 되며 급여를 기준으로 3구간으로 나눠서 저임금, 평균임금, 고임금 사원으로 나눈 결과이다.
'DataBase > Oracle' 카테고리의 다른 글
11. Function - 변환함수 (0) | 2021.07.24 |
---|---|
10. Function - 날짜 함수 (0) | 2021.07.24 |
8. Function - 문자열 함수 (0) | 2021.06.22 |
7. 연산자(Operator) (0) | 2021.06.18 |
7. 자료형(Data type) (0) | 2021.06.17 |