02. 함수(FUNCTION) PART.2
<숫자처리함수>
ABS
숫자의 절대값을 구해주는 함수
1
|
SELECT ABS(-10), ABS(-6.3) FROM DUAL;
|
cs |
MOD
두 수를 나눈 나머지값을 반환
1
|
SELECT MOD(10,3) FROM DUAL;
|
cs |
ROUND
반올림한 결과를 반환
ROUND(NUMBER, [위치])
1
|
SELECT ROUND(123.456) FROM DUAL;
|
cs |
CEIL
올림처리를 위한 함수
CEIL(NUMBER)
1
|
SELECT CEIL(123.456) FROM DUAL;
|
cs |
FLOOR, TRUNC
버림처리함수
TRUNC(NUMBER, [위치])
1
|
SELECT TRUNC(123.952) FROM DUAL;
|
cs |
<날짜 처리 함수>
SYSDATE : 시스템의 현재 날짜 및 시간을 반환
1
|
SELECT SYSDATE FROM DUAL;
|
cs |
MONTH_BETWEEN : 두 날짜 사이의 개월 수
EX
사원들의 사원명, 입사일, 근무일수 , 근무 개월수 조회
1
2
3
|
SELECT EMP_NAME, HIRE_DATE, FLOOR(SYSDATE - HIRE_DATE),
CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE))
FROM EMPLOYEE;
|
cs |
ADD_MONTH : 특정 날짜에 NUMBER개월수를 더해서 반환
EXTRACT : 특정 날짜로부터 년|월|일 값을 추출해서 반환하는 함수
[표현법]
EXTRACT(YEAR FROM DATE) : 연도만 추출
EXTRACT(MONTH FROM DATE) : 월만 추출
EXTRACT(DAY FROM DATE) : 일만 추출
EX)
사원의 사원명, 입사년도, 입사월, 입사일을 조회
1
2
3
4
5
6
|
SELECT EMP_NAME,
EXTRACT(YEAR FROM HIRE_DATE) AS "입사년도",
EXTRACT(MONTH FROM HIRE_DATE) AS "입사월",
EXTRACT(DAY FROM HIRE_DATE) AS "입사일"
FROM EMPLOYEE
ORDER BY 2,3,4;
|
cs |
TO_DATE : 숫자타입 또는 문자타입을 날짜타입으로 변경하는 함수
[표현식]
TO_DATE(숫자 | 문자, [포맷]) --> DATE
<NULL 처리함수>
NVL(컬럼, 해당컬림이 NULL일 경우 보여줄 값)
1
2
|
SELECT EMP_NAME, NVL(BONUS,0)
FROM EMPLOYEE;
|
cs |
<선택함수>
DECODE(비교하고자하는 대상(컬럼, 연산식, 함수식), 비교값1, 결과값1, 비교값2, 결과값2...)
EX)
사번, 사원명, 주민번호, 성별
1
2
3
|
SELECT EMP_ID, EMP_NAME, EMP_NO,
DECODE(SUBSTR(EMP_NO, 8, 1),'1', '남', '2', '여','3','남','4','여','외계인') "성별"
FROM EMPLOYEE;
|
cs |
<CASE WHEN THEN>
[표현식] --(자바에서 IF문과 비슷한 느낌)
CASE
WHEN 조건식 1 THEN 결과값1
WHEN 조건식 2 THEN 결과값2
...
ELSE 결과값
END
EX)
급여가 500만원 이상이면 고급 300만원 이상이면 중급 그 외에는 초급인 사원명과 월급
1
2
3
4
5
6
|
SELECT EMP_NAME, SALARY,
CASE WHEN SALARY >= 5000000 THEN '고급'
WHEN SALARY >= 3000000 THEN '중급'
ELSE '초급'
END AS 인력
FROM EMPLOYEE;
|
cs |

<SUM(숫자타입컬럼)>
해당컬럼 값들의 총 합계를 구해서 반환해주는 함수
EX)
근로자테이블의 전사원의 총 급여를 구해라
1
2
3
|
SELECT SUM(SALARY)
FROM EMPLOYEE;
|
cs |
<AVG>
해당 컬럼값들의 평균을 구해서 반환해주는 함수
EX)
근로자테이블의 전사원의 급여의 평균 값을 구해라
<MIN>
해당 컬럼값 중 가장 작은 값을 구해서 반환
1
2
3
|
SELECT MIN(EMP_NAME), MIN(SALARY)
FROM EMPLOYEE;
|
cs |

<MAX>
해당 컬럼값 중 가장 큰 값을 구해서 반환
1
2
|
SELECT MAX(EMP_NAME), MAX(SALARY), MAX(HIRE_DATE)
FROM EMPLOYEE;
|
cs |