NULL 값 치환하기 = nvl(컬럼명, 치환할 값)
Null 값을 0으로 변환하기
예시) select ename, comm, nvl(comm, 0)
from emp
문자로 치환할 경우 형 변환이 필요하다
예시) select ename, nvl(to_char(comm), 'no comm')
from emp
SQL로 조건문 구현하기
DECODE = decode(컬럼명, 조건값, 출력값, 조건값, 출력값, 나머지)
예시)
select ename, deptno, decode(deptno, 10, 300, 20, 400, 0) as bonus
from emp
예시2)
select ename, job, decode(job, 'SALESMAN', 6000, 'ANALYST', 3000, 'MANAGER', 2000, 0) as bonus
from emp
CASE = case when 컬럼명 조건 then 출력값 end
예시)
select ename, job, sal,
case
when sal >= 3000 then 500
when sal >= 2000 then 300
when sal >= 1000 then 200
else 0
end as bonus
from emp
최대 값 구하기 = max(컬럼명)
예시)
select job, max(sal)
from emp
where job in ('SALESMAN')
group by job
최소 값 구하기 = min(컬럼명)
예시)
select deptno, min(sal)
from emp
group by deptno
평균 값 구하기 = avg(컬럼명)
예시)
select job, round(avg(sal)) as 평균월급
from emp
group by job
order by 평균월급 desc
합계 값 구하기 = sum(컬럼명)
1981년도 입사한 직원의 월급 합계
예시)
select sum(sal)
from emp
where to_char(hiredate, 'RRRR') = '1981'
group by 사용시 조건은 where이 아니라 having을 사용한다.
예시)
select job, sum(sal)
from emp
group by job
having sum(sal) >= 6000
개수 세기 = count (열) from emp(테이블)
null 값을 제외한 개수를 구한다(group함수의 경우)
where절로 먼저 필터링하는 것이 having절에 조건을 추가하는 것보다 더 빠른다.
예시1)
select job, count()
from emp
where job not in ('SALESMAN')
group by job
having count() >= 3
예시2)
select job, count()
from emp
group by job
having count() >= 3 and job != 'SALESMAN'