[SQL] HAVING절 예제

정은아·2022년 8월 26일
0

Q. 부서별 평균급여를 구하고 그 결과 평균급여가 2000이상인 부서만 출력하시오.

select deptno, AVG(sal) 
from emp 
group by deptno
HAVING AVG(sal) >= 2000;

Q. 1981년 5월 31일 이후 입사자 중에서 커미션이 NULL 이거나,
0인 사원의 커미션은 500으로 하고, 그렇지 않으면 기존 커미션을 출력하라. **

select ename 입사자 , hiredate,
					DECODE(comm, NULL, 500,
									0, 500,
									comm)커미션
from emp
where hiredate > to_date(19810531)
OREDR BY ename;

Q. 부서별 최대 값과 최소값을 구하되, 최대 급여가 2900 이상인 부서만 출력하시오

   select deptno, MAX(sal), MIN(sal) 
   from emp 
   group by deptno
   having MAX(sal) >= 2900;

Q. 부서별 평균 급여를 구하고, 그 결과 평균 급여가 2000 이상인 부서만 출력하시오.

   select deptno, AVG(sal) 
   from emp 
   group by deptno
   having AVG(sal) >= 2000;

Q. 급여가 1000 이상인 사람들로 부서별 평균급여를 구하고,
그 결과 평균 급여가 2000이상인 부서만 출력하시오.

   select deptno, AVG(sal) from emp
   where sal > 1000
   group by deptno
   having AVG(sal) >= 2000;


   select job, count(*) cnt
   from emp
   where deptno IN(10,20,30)
   GROUP BY job
   HAVING count(*) > 2;

Q. 이름에 'LA'가 들어있지 않고,
JOB의 합이 3000 이상인 JOB그룹과
JOB에 속한 사원수를 출력하시오 **

JOB, 카운트, 합 형식으로 나오게 하시오

select job, count(*), SUM(sal)
from emp
where ename not like '%LA%'
group by job
having SUM(sal) >= 3000;
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글