IT Study/Database-Oracle
SubQuery 예제(hr)
도뿌리
2018. 6. 22. 15:03
-- 문제1) EMPLOYEES 테이블에서 Kochhar의 급여보다 많은 사원의 정보를 사원번호,이름,담당업무,급여를 출력하라.SELECT EMPLOYEE_ID, LAST_NAME,JOB_ID,SALARYFROM EMPLOYEESWHERE SALARY > (SELECT SALARYFROM EMPLOYEESWHERE LAST_NAME = 'Kochhar');-- 문제2) EMPLOYEES 테이블에서 급여의 평균보다 적은 사원의 정보를 사원번호,이름,담당업무,급여,부서번호를 출력하여라.SELECT EMPLOYEE_ID, LAST_NAME,JOB_ID,SALARY,DEPARTMENT_IDFROM EMPLOYEESWHERE SALARY < (SELECT AVG(SALARY)FROM EMPLOYEES);-- 문제3) EMPLOYEES 테이블에서 100번 부서의 최소 급여보다 최소 급여가 많은 다른 모든 부서를 출력하라SELECT DEPARTMENT_ID,MIN(SALARY)FROM EMPLOYEESGROUP BY DEPARTMENT_IDHAVING MIN(SALARY) > ( SELECT MIN(SALARY)FROM EMPLOYEESWHERE DEPARTMENT_ID = 100);-- 문제4) 업무별로 최소 급여를 받는 사원의 정보를 사원번호,이름,업무,부서번호를 출력하여라. 단 업무별로 정렬하여라.SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY, DEPARTMENT_IDFROM EMPLOYEESWHERE (JOB_ID,SALARY) IN ( SELECT JOB_ID,MIN(SALARY)FROM EMPLOYEESGROUP BY JOB_ID)ORDER BY JOB_ID;-- 문제5) EMPLOYEES 과 DEPARTMENTS 테이블에서 업무가 SA_MAN 사원의 정보를 이름,업무,부서명,근무지를 출력하라.SELECT LAST_NAME, JOB_ID, DEPARTMENT_NAME, LOCATION_IDFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_IDAND JOB_ID ='SA_MAN';-- 문제6) ? EMPLOYEES ?테이블에서?가장?많은?사원을?갖는?MANAGER의?사원번호를?출력하라.SELECT MANAGER_IDFROM EMPLOYEESGROUP BY MANAGER_IDHAVING COUNT(*) = ( SELECT MAX(COUNT(*))FROM EMPLOYEESGROUP BY MANAGER_ID);-- 문제7) EMPLOYEES ?테이블에서?가장?많은?사원이?속해있는?부서번호와?사원수를?출력하라.SELECT DEPARTMENT_ID,COUNT(*)FROM EMPLOYEESGROUP BY DEPARTMENT_IDHAVING COUNT(*) = (SELECT MAX(COUNT(*))FROM EMPLOYEESGROUP BY DEPARTMENT_ID);-- 문제8) ? EMPLOYEES ?테이블에서?사원번호가?123인?사원의?직업과?같고?-- 사원번호가?192인?사원의?급여(SAL)보다?많은?사원의?사원번호,?이름,?-- 직업,?급여를?출력하라.SELECT EMPLOYEE_ID,LAST_NAME, JOB_ID, SALARYFROM EMPLOYEESWHERE JOB_ID = ( SELECT JOB_IDFROM EMPLOYEESWHERE EMPLOYEE_ID = 123) ANDSALARY > ( SELECT SALARYFROM EMPLOYEESWHERE EMPLOYEE_ID = 192);-- 문제9) ? 직업(JOB)별로?최소?급여를?받는?사원의?정보를?사원번호,?이름,?업무,?부서명을?출력하라.-- 조건1 :?직업별로?내림차순?정렬SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, DEPARTMENT_NAME,SALARYFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND(JOB_ID,SALARY) IN ( SELECT JOB_ID,MIN(SALARY)FROM EMPLOYEESGROUP BY JOB_ID) ORDER BY JOB_ID DESC;-- 문제10) EMPLOYEES 테이블에서 50번 부서의 최소 급여를 받는 사원 보다-- 많은 급여를 받는 사원의 정보를-- 사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.-- 단 50번은 제외SELECT EMPLOYEE_ID, LAST_NAME,JOB_ID, HIRE_DATE,SALARY,DEPARTMENT_IDFROM EMPLOYEESWHERE SALARY > ( SELECT MIN(SALARY)FROM EMPLOYEESWHERE DEPARTMENT_ID = 50GROUP BY DEPARTMENT_ID)AND DEPARTMENT_ID != 50;-- 문제11) EMPLOYEES 테이블에서 50번 부서의 최고 급여를 받는 사원 보다-- 많은 급여를 받는 사원의 정보를 사원번호,이름,업무,입사일자,급여,부서번호를-- 출력하라. 단50번은 제외SELECT EMPLOYEE_ID, LAST_NAME,JOB_ID, HIRE_DATE,SALARY,DEPARTMENT_IDFROM EMPLOYEESWHERE SALARY > ( SELECT MAX(SALARY)FROM EMPLOYEESWHERE DEPARTMENT_ID = 50GROUP BY DEPARTMENT_ID)AND DEPARTMENT_ID != 50ORDER BY SALARY;