본문 바로가기

자바 웹 개발자가 될거야/DB

[Oracle] TO_NUMBER / TO_DATE / NVL / NULLIF / COALESCE / 그룹함수 / AVG, COUNT, MAX, MIN, SUM

 

 

 

< 단일행 함수 >

 

④ 변환함수

 

- 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;

NVL함수 적용 전(왼쪽)과 후(오른쪽)

 

- 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 데이터 타입만 사용가능