[Oracle] 쿼리연습2

2010. 4. 28. 16:24Database/Oracle

--------------------------------------------------------------------------------------
1.ALLEN과 부서가 같은 사원들의 사원명, 입사일을 출력하되 높은 급여순으로 출력하세요.
--------------------------------------------------------------------------------------
SELECT ENAME,HIREDATE
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE ENAME='ALLEN')
ORDER BY SAL DESC

--------------------------------------------------------------------------------------
2.가장 높은 급여를 받는 사원보다 입사일이 늦은 사원의 이름, 입사일을 출력하세요.
-------------------------------------------------------------------------------------
SELECT ENAME,HIREDATE
FROM EMP
WHERE HIREDATE >
(SELECT HIREDATE FROM EMP WHERE SAL=(SELECT MAX(SAL) FROM EMP))


-------------------------------------------------------------------------------------- 
3.이름에 "T"자가 들어가는 사원들의 급여의 합을 구하세요. (LIKE)
--------------------------------------------------------------------------------------
SELECT SUM(SAL)
FROM EMP
WHERE ENAME LIKE '%T%'

--------------------------------------------------------------------------------------
4.모든 사원의 평균급여를 구하세요.
-------------------------------------------------------------------------------------
SELECT AVG(SAL) FROM EMP

--------------------------------------------------------------------------------------
7. 각 부서별 평균 급여를 구하세요. (GROUP BY)
--------------------------------------------------------------------------------------
 -- GROUP BY 사용시 SELECT 절에 명시할수 있는 컬럼은 원칙상
     GROUP BY 에서 명시한 컬럼만이 가능하다.
     * 예외: GROUP BY명시하지 않아도 SELECT 절에 올수있는 대상은 집계함수

SELECT DEPTNO,AVG(SAL) 부서별평균급여
FROM EMP
GROUP BY DEPTNO

--------------------------------------------------------------------------------------
6.각 부서별 평균급여,전체급여,최고급여,최저급여을 구하여 평균급여가
   많은 순으로 출력하세요.
--------------------------------------------------------------------------------------
SELECT AVG(SAL),SUM(SAL),MAX(SAL),MIN(SAL)
FROM EMP
GROUP BY DEPTNO
ORDER BY AVG(SAL) DESC

--------------------------------------------------------------------------------------
7.20번 부서의 최고 급여보다 많은 사원의 사원번호,사원명,급여를 출력하세요.
--------------------------------------------------------------------------------------
SELECT EMPNO,ENAME,SAL
FROM EMP
WHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE DEPTNO=20)


--------------------------------------------------------------------------------------
8.SMITH와 같은 부서에 속한 사원들의 평균 급여보다 큰 급여를 받는 모든 사원의 사원명,급여를 출력하세요
--------------------------------------------------------------------------------------
SELECT ENAME,SAL
FROM EMP
WHERE SAL >
(SELECT AVG(SAL) FROM EMP WHERE DEPTNO=
  (SELECT DEPTNO FROM EMP WHERE ENAME='SMITH')
)

----------------------------------------------------------------------
9.회사내의 최소급여와 최대급여의 차이를 구하세요
----------------------------------------------------------------------
(1)
SELECT
(SELECT MAX(SAL) FROM EMP) - (SELECT MIN(SAL) FROM EMP)
FROM DUAL

(2)
SELECT MAX(SAL)-MIN(SAL) FROM EMP;

----------------------------------------------------------------------
10.SCOTT의 급여에서 1000 을 뺀 급여보다 적게 받는 사원의 이름,급여를
    출력하세요.
----------------------------------------------------------------------
SELECT ENAME,SAL
FROM EMP
WHERE SAL < (SELECT SAL-1000 FROM EMP WHERE ENAME='SCOTT')
 

----------------------------------------------------------------------
11.JOB이 MANAGER인 사원들 중 최소급여를 받는 사원보다  급여가 적은
    사원의 이름, 급여를 출력하세요
----------------------------------------------------------------------
SELECT ENAME,SAL
FROM EMP
WHERE SAL<
(SELECT MIN(SAL) FROM EMP WHERE JOB='MANAGER')

----------------------------------------------------------------------
12.이름이 S로 시작하고 마지막글자가 H인 사원의 이름을 출력하세요.
----------------------------------------------------------------------
SELECT ENAME
FROM EMP
WHERE ENAME LIKE 'S%H'
 
----------------------------------------------------------------------
13.WARD가 소속된 부서 사원들의 평균 급여보다 , 급여가 높은 사원의
    이름 ,급여를 출력하세요.
----------------------------------------------------------------------
SELECT ENAME,SAL
FROM EMP
WHERE SAL > (WARD가 소속된 부서 사원들의 평균 급여)
(SELECT AVG(SAL)
FROM EMP
WHERE DEPTNO=
(SELECT DEPTNO FROM EMP WHERE ENAME='WARD')
)
 
----------------------------------------------------------------------
14.EMP 테이블의 모든 사원수를 출력하세요.
----------------------------------------------------------------------
SELECT COUNT(*) FROM EMP   --> 레코드의 수는 어떤 컬럼을 대상으로 세어도
                                                     상관없다!!!

----------------------------------------------------------------------
14-2 : 부서별 사원수를 출력하세요
----------------------------------------------------------------------
SELECT DEPTNO,COUNT(*)
FROM EMP
GROUP BY DEPTNO

----------------------------------------------------------------------
15.업무별(JOB) 사원수를 출력하세요.
----------------------------------------------------------------------
SELECT JOB,COUNT(*)
FROM EMP
GROUP BY JOB

-------------------------------------------------------------------------
16.최소급여를 받는 사원과 같은 부서의 모든 사원명을 출력하세요.
-------------------------------------------------------------------------
SELECT ENAME
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE SAL=(
 SELECT MIN(SAL) FROM EMP
))

'Database > Oracle' 카테고리의 다른 글

[Oracle] 쿼리연습4  (0) 2010.04.28
[Oracle] 쿼리연습3  (0) 2010.04.28
[Oracle] 쿼리연습1  (0) 2010.04.28
[Oracle] 오라클 Admin실습1  (0) 2010.04.28
[Oracle] 오라클이란?  (0) 2010.04.28