SQL - (조건문과 통계값)

Nobu90·2023년 8월 8일
0

SQL

목록 보기
6/8

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

  • 실행 순서
    from > where > group by > select

최소 값 구하기 = 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이 예시2보다 빠르다

예시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'

0개의 댓글