3. 그룹함수
※ EMP 테이블 구조
※ 그룹 함수
그룹함수 | avg, count, max, min, stddev, sum, variance |
1. max 함수
# 문제 65. 부서번호가 20번인 사원들 중에서 최대월급을 출력하시오.
select deptno, max(sal) from emp where deptno = 20 group by deptno; |
2. avg 함수
# 문제 66. 커미션이 없는 사원은 0으로 처리하고 평균을 구하시오.
select avg(comm) from emp;
select avg(nvl(comm,0)) from emp; |
- 첫번째 쿼리는 null값을 무시하기 때문에 나누는 값이 4이고 두번째 쿼리는 null값을 처리했기 때문에 나누는 값이 12이다. |
# 문제 67. 직업 평균 월급이 3000 이상인 것만 출력하시오. (having)
select job, avg(sal) from emp group by job having avg(sal) >= 3000; |
3. count 함수
# 문제 68. 직업이 SALESMAN인 사원들의 인원수를 출력하시오.
select count(*) from emp where job = 'SALESMAN'; |
# 문제 69. 직업, 직업별 인원수를 출력하시오.
select job, count(*) from emp group by job; |
# 문제 70. emp 테이블의 직업의 종류 갯수를 출력하시오.
select count(distinct job) from emp; |
# 문제 71. 이름, 직업, 자기가 속한 직업의 인원 수를 출력하시오. select ename, job, count(*) over (partition by job) 인원 from emp; |
4. sum 함수
# 문제 72. 부서번호, 부서번호별 총 월급을 출력하시오.
select deptno, sum(sal) from emp group by deptno;
- 세로형식을 가로 형식으로 전환 ~ pivot도 가능 select sum(decode(deptno, 10, sal, null)) as "10", sum(decode(deptno, 20, sal, null)) as "20", sum(decode(deptno, 30, sal, null)) as "30" from emp; |
# 문제 73. 입사한 년도, 입사한 년도별 인원수를 가로로 출력하시오.
select sum(decode(to_char(hiredate,'RRRR'),'1980',1,null)) as "1980",
select * |