< 단일행 함수 >
④ 변환함수
- TO_CHAR(DATE → CHAR), TO_CHAR(NUMBER → CHAR), TO_NUMBER, TO_DATE
- TO_NUMBER( 바꿀 열, '문자열 포맷' )
· 문자열 포맷을 통해서 숫자만 반환
TO_NUMBER(salary, '$999,999')
· salary 열은 $999,999 형태일건데 ( $와 , ) 이 모양 빼고 999999 숫자만 반환해라 ~
- TO_DATE( 바꿀 열, '문자열 포맷' )
· 문자를 날짜형식으로 바꿔줌
select employee_id, last_name, hire_date
from employees
where hire_date < TO_DATE('04-01-10', 'RR-DD-MM');
⑤ 일반함수
- NVL(실제값, NULL일때 대체값)
· NULL값을 실제값으로 변환
· 두 인자의 데이터 유형이 일치해야 한다
· 날짜, 문자, 숫자 타입 사용가능
select last_name, salary,NVL(commission_pct, 0) as commission
from employees;
- NVL2(실제값, NULL이 아닐때 대체값1, NULL일때 대체값2)
· 대체값1과 2의 데이터타입이 같아야한다
- NULLIF(expr1, expr2)
· 두 값이 같으면 NULL반환, 두 값이 다르면 첫 번째 인수값 반환
select first_name, length(first_name) as "expr1",
last_name, length(last_name) as "expr2",
NULLIF(length(first_name), length(last_name)) as result
from employees;
- COALESCE(expr1, expr2, expr3, ... , exprN)
· NULL이 아닌 처음으로 찾아지는 실제값을 반환
· NVL 확장된 버전
select last_name, employee_id,
COALESCE(to_char(commission_pct), to_char(manager_id), 'No commission and no manager')
from employees;
· commission_pct열이 NULL이 아니면 commission_pct가 나올거고,
commission_pct열이 NULL이고 manager_id가 NULL이 아니면 manager_id가 나올거고,
둘 다 NULL이면 'No commission and No manager' 나옴
< 그룹함수 >
- 그룹함수는 NULL값에 대해서는 작업하지 않음
① AVG(값 or col이름)
- 평균구함
- NUMBER 데이터 타입만 사용가능
② COUNT(값 or col이름)
- 조건에 맞는 행의 갯수 알려줌
- 인수에 따라 count 되는 방식이 다름
select count(*) from employees; // NULL O , 중복값 O (모든 컬럼을 하나로 생각)
select count(*) from employees where department_id=80; // 80번 부서에 소속된 사원의 수
select count(expr) from employees; // NULL X , 중복값 O
select count(commission_pct) from employees where department_id=80; // 80번 부서의 사원 중 comm 받는 사원의 수
select count(distinct expr) from employees; // NULL X , 중복값 X
select count(distinct department_id) from employees; // 사원들이 소속된 부서의 수
③ MAX(값 or col이름)
- 값이나 행 들 중에서 가장 큰 값을 반환
- 모든 데이터 타입에서 사용가능
④ MIN(값 or col이름)
- 값이나 행 들 중에서 가장 작은 값을 반환
- 모든 데이터 타입에서 사용가능
select MAX(salary), MIN(salary) from employees; // 숫자타입
select MAX(hire_date), MIN(hite_date) from employees; // 날짜타입
select MAX(last_name), MIN(last_name) from employees; // 문자타입
⑤ SUM(값 or col이름)
- 합계 구함
- NUMBER 데이터 타입만 사용가능