조인과 서브쿼리
Contents
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
이름이 ‘HALL’인 사원의 부서명을 출력하라. SELECT DEPARTMENT_NAME FROM HR_EMPLOYEES E, HR_DEPARTMENTS D WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND E.LAST_NAME=‘HALL’
직원의 이름, 성, 상관 번호, 상관 이름, 성을 출력하라 출력하라. 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
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 )
‘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’) ;
‘JAMES’가 속해있는 부서의 모든 직원의 정보를 출력하라. SELECT * FROM HR_EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM HR_EMPLOYEES WHERE FIRST_NAME=‘JAMES’)
전체 사원의 평균 임금보다 많은 사원의 사원번호, 이름, 부서명, 입사일, 급여를 출력하라. 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)
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
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
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
‘JAMES’이나 ‘JOHN’의 급여와 같은 사원의 사원번호, 이름, 급여를 출력하라. SELECT * FROM HR_EMPLOYEES WHERE SALARY IN (SELECT SALARY FROM HR_EMPLOYEES WHERE FIRST_NAME=‘JAMES’ OR FIRST_NAME=‘JOHN’)
급여가 80번 부서의 최고 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라. SELECT * FROM HR_EMPLOYEES WHERE SALARY>(SELECT MAX(SALARY) FROM HR_EMPLOYEES WHERE DEPARTMENT_ID=80)
급여가 80번 부서의 최저 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라. SELECT * FROM HR_EMPLOYEES WHERE SALARY>(SELECT MIN(SALARY) FROM HR_EMPLOYEES WHERE DEPARTMENT_ID=80)
Author Jaejin Jang
LastMod 2017-12-23
License Jaejin Jang