기본 콘텐츠로 건너뛰기

조인과 서브쿼리

1. EMPLOYESS와 DEPT 을 JOIN하여 부서 번호, 부서명, 이름, 급여를 출력하라.
SELECT HR_EMPLOYEES.DEPARTMENT_ID, DEPARTMENT_NAME, LAST_NAME, SALARY FROM HR_EMPLOYEES INNER JOIN HR_DEPARTMENTS ON HR_EMPLOYEES.DEPARTMENT_ID = HR_DEPARTMENTS.DEPARTMENT_ID

2. 이름이 'HALL'인 사원의 부서명을 출력하라.
SELECT DEPARTMENT_NAME FROM HR_EMPLOYEES E, HR_DEPARTMENTS D WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND E.LAST_NAME='HALL'

3. 직원의 이름, 성, 상관 번호, 상관 이름, 성을 출력하라 출력하라.
SELECT E1.FIRST_NAME , E1.LAST_NAME, E1.MANAGER_ID, E2.FIRST_NAME, E2.LAST_NAME  FROM HR_EMPLOYEES E1, HR_EMPLOYEES E2 WHERE E1.MANAGER_ID = E2.EMPLOYEE_ID

4. DEPT Table 에는 존재하는 부서코드이지만 해당부서에 근무하는 사람이 존재하지 않는 경우의 결과를 출력하라.
SELECT * FROM HR_DEPARTMENTS WHERE DEPARTMENT_ID NOT IN(SELECT E.DEPARTMENT_ID FROM HR_EMPLOYEES E GROUP BY E.DEPARTMENT_ID HAVING COUNT(E.DEPARTMENT_ID) >0 )
               
5. 'ALLEN'의 직무와 같은 사람의 이름, 부서명, 급여, 직무를 출력하라.
 SQL> select e.ename, d.dname, e.sal, e.job
   from emp e, dept d
   where e.deptno = d.deptno
    and e.job = (select job from emp where ename = 'ALLEN')
   ;



6. 'JAMES'가 속해있는 부서의 모든 직원의 정보를 출력하라.
SELECT * FROM HR_EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM HR_EMPLOYEES WHERE FIRST_NAME='JAMES')
     
7. 전체 사원의 평균 임금보다 많은 사원의 사원번호, 이름, 부서명, 입사일, 급여를 출력하라.
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_NAME, HIRE_DATE, SALARY FROM HR_EMPLOYEES E, HR_DEPARTMENTS D WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID AND E.SALARY>=(SELECT AVG(SALARY) FROM HR_EMPLOYEES)

8. 50번 부서 사람들 중에서 80번 부서의 사원과 같은 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일을 출력하라.
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_NAME, HIRE_DATE FROM HR_EMPLOYEES E, HR_DEPARTMENTS D WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID
AND JOB_ID IN (SELECT JOB_ID FROM HR_EMPLOYEES WHERE DEPARTMENT_ID=80) AND E.DEPARTMENT_ID=50
 
9. 50번 부서 중에서 80번 부서에는 없는 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일자을 출력하라.
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_NAME, HIRE_DATE FROM HR_EMPLOYEES E, HR_DEPARTMENTS D WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID
AND JOB_ID NOT IN (SELECT JOB_ID FROM HR_EMPLOYEES WHERE DEPARTMENT_ID=80) AND E.DEPARTMENT_ID=50

10. 80번 부서에 근무하는 사원의 사원번호, 이름, 부서명, 입사일, 급여를 급여가 많은 순으로 출력하라.
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_NAME, HIRE_DATE, SALARY FROM HR_EMPLOYEES E, HR_DEPARTMENTS D WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID AND E.DEPARTMENT_ID=80 ORDER BY SALARY DESC

11. 'JAMES'이나 'JOHN'의 급여와 같은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT * FROM HR_EMPLOYEES WHERE SALARY IN (SELECT SALARY FROM HR_EMPLOYEES WHERE FIRST_NAME='JAMES' OR FIRST_NAME='JOHN')

12. 급여가 80번 부서의 최고 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
 SELECT * FROM HR_EMPLOYEES WHERE SALARY>(SELECT MAX(SALARY) FROM HR_EMPLOYEES WHERE DEPARTMENT_ID=80)

13. 급여가 80번 부서의 최저 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
 SELECT * FROM HR_EMPLOYEES WHERE SALARY>(SELECT MIN(SALARY) FROM HR_EMPLOYEES WHERE DEPARTMENT_ID=80)

댓글

이 블로그의 인기 게시물

맥스 어만(Max Ehrmann) - 소망(진정 바라는 것)

진정 바라는 것                                                                       -맥스 어만 소란스럽고 바쁜 일상속에서도  침묵 안에 평화가 있다는 사실을 기억하십시오 포기하지 말고 가능한한 모든 사람들과 잘 지내도록 하십시오 조용하면서도 분명하게 진실을 말하고  어리석고 무지한 사람들의 말에도 귀를 기울이십시오  그들 역시 할 이야기가 있을테니까요  목소리가 크고 공격적인 사람들은 피하십시오  그들은 영혼을 괴롭힙니다 자신을 다른 사람들과 비교하면 자신이 하찮아 보이고  비참한 마음이 들수도 있습니다  더 위대하거나 더 못한 사람들은 언제나...