DBMS/Summary

HAVING - group by의 하위 쿼리문.

gandus 2010. 4. 27. 13:59

## where  , group by , having 이 온다


## 각 부서별로 월급이 4000 이상인사람
/*
SELECT deptno, MAX(sal)
FROM emp
GROUP BY deptno
HAVING MAX(sal) > 4000; 
*/


##각 직업중에서 직업이름에 MAN이 들어가지 않고, 각 직업당 총월급 이 3000이상인 직업을
## 월급을 기준으로 오름차순 정렬
/*
SELECT job, SUM(sal) PAYROLL
FROM emp
WHERE job NOT LIKE '%MAN%'
GROUP BY job
HAVING SUM(sal) > 3000
ORDER BY SUM(sal);
*/


## Having 예제문제.##############


/*
##각 부서별로 지급되는 총 월급에서 금액이 10000 이상인 곳은?
select deptno,  sum(sal) SUM_SAL from emp
group by deptno
having sum(sal) >=10000;
*/

##각 부서에서 월급이 제일 많은 사람과 제일 적은 사람의 이름과 직업은?
/*
select deptno, ename , job, sal from emp
where sal = (select max(sal) from emp where deptno = 10) ||
      sal = (select min(sal) from emp where deptno = 10) ||
      sal = (select max(sal) from emp where deptno = 20) ||
      sal = (select min(sal) from emp where deptno = 20) ||
      sal = (select max(sal) from emp where deptno = 30) ||
      sal = (select min(sal) from emp where deptno = 30)
order by deptno;
*/

##월급이 제일 많은 사람과 제일 적은 사람의 차이가 900 이상인 부서는?
/*
select deptno, max(sal) , min(sal) , max(sal) - min(sal) from emp
group by deptno
having max(sal) - min(sal) >= 900;
*/