본문 바로가기

Dev Ref/SQL Developer

SQL Developer 기본문제 풀이(+IN(SUBQUREY) ...)

# 문제풀이에 사용된 함수

= IN(SUBQUREY)



  1. --문제1) EMPLOYEES 테이블에서
  2. --Kochhar의 급여보다 많은 사원의 정보를
  3. --사원번호,이름,담당업무,급여를 출력하라.
  4. SELECT
  5.     EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY
  6. FROM EMPLOYEES
  7. WHERE SALARY >(SELECT
  8.     SALARY
  9. FROM EMPLOYEES
  10. WHERE LAST_NAME = 'Kochhar');

  11. --문제2) EMPLOYEES 테이블에서
  12. --급여의 평균보다 적은 사원의 정보를
  13. --사원번호,이름,담당업무,급여,부서번호를 출력하여라.
  14. SELECT
  15.     EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY,DEPARTMENT_ID
  16. FROM EMPLOYEES
  17. WHERE SALARY > (
  18. SELECT
  19.     FLOOR(AVG(SALARY))
  20. FROM EMPLOYEES)
  21. ORDER BY SALARY DESC;

  22. --문제3) EMPLOYEES 테이블에서
  23. --100번 부서의 최소 급여보다 
  24. --최소 급여가 많은 다른 모든 부서를 출력하라
  25. SELECT
  26.     DEPARTMENT_ID,MIN(SALARY)
  27. FROM EMPLOYEES
  28. GROUP BY DEPARTMENT_ID
  29. HAVING MIN(SALARY) > (SELECT
  30.     MIN(SALARY)
  31. FROM EMPLOYEES
  32. WHERE DEPARTMENT_ID = '100');

  33. --문제4)EMPLOYEES 테이블에서
  34. --업무별로 최소 급여를 받는 사원의 정보를
  35. --사원번호,이름,업무,부서번호를 출력하여라. 
  36. --단 업무별로 정렬하여라.
  37. SELECT
  38.     EMPLOYEE_ID,FIRST_NAME,JOB_ID,DEPARTMENT_ID
  39. FROM EMPLOYEES
  40. WHERE (JOB_ID,SALARY) IN(SELECT JOB_ID,MIN(SALARY) FROM EMPLOYEES GROUP BY JOB_ID);

  41. --문제5) EMPLOYEES 과 DEPARTMENTS 테이블에서
  42. --업무가 SA_MAN 사원의 정보를 이름,업무,부서명,근무지를 출력하라.
  43. SELECT
  44.     E.FIRST_NAME,E.JOB_ID,D.DEPARTMENT_NAME,D.LOCATION_ID
  45. FROM EMPLOYEES E, DEPARTMENTS D
  46. WHERE e.department_id = D.DEPARTMENT_ID
  47. AND E.JOB_ID = 'SA_MAN';

  48. --문제6) EMPLOYEES ?테이블에서
  49. --가장?많은?사원을?갖는?MANAGER의?사원번호를?출력하라.
  50. SELECT
  51.     MANAGER_ID
  52. FROM EMPLOYEES
  53. GROUP BY MANAGER_ID
  54. HAVING COUNT(MANAGER_ID) IN (
  55. SELECT
  56.     MAX(COUNT(MANAGER_ID))
  57. FROM EMPLOYEES
  58. GROUP BY MANAGER_ID);

  59. --문제7) EMPLOYEES ?테이블에서
  60. --가장?많은?사원이?속해있는?부서번호와?사원수를?출력하라.
  61. SELECT
  62.     DEPARTMENT_ID,COUNT(DEPARTMENT_ID)
  63. FROM EMPLOYEES
  64. GROUP BY DEPARTMENT_ID
  65. HAVING COUNT(DEPARTMENT_ID) IN(
  66. SELECT
  67.     MAX(COUNT(DEPARTMENT_ID))
  68. FROM EMPLOYEES
  69. GROUP BY DEPARTMENT_ID);

  70. --문제8)EMPLOYEES ?테이블에서
  71. --사원번호가?123인?사원의?직업과?같고?
  72. --사원번호가?192인?사원의?급여(SAL)보다?많은?사원의?
  73. --사원번호,?이름,?직업,?급여를?출력하라.
  74. SELECT
  75.     EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY
  76. FROM EMPLOYEES
  77. WHERE JOB_ID = (SELECT
  78.     JOB_ID
  79. FROM EMPLOYEES
  80. WHERE EMPLOYEE_ID = '123')AND SALARY > (SELECT
  81.     SALARY
  82. FROM EMPLOYEES
  83. WHERE EMPLOYEE_ID = '192');

  84. --문제9)EMPLOYEES ?테이블에서
  85. --직업(JOB)별로?최소?급여를?받는?사원의?정보를?
  86. --사원번호,?이름,?업무,?부서명을?출력하라.
  87. -- 조건1 :?직업별로?내림차순?정렬
  88. SELECT
  89.     EMPLOYEE_ID,FIRST_NAME,JOB_ID,D.DEPARTMENT_NAME
  90. FROM EMPLOYEES E, DEPARTMENTS D
  91. WHERE e.employee_id = D.DEPARTMENT_ID
  92. AND(JOB_ID,SALARY) IN(SELECT JOB_ID,MIN(SALARY) FROM EMPLOYEES GROUP BY JOB_ID)
  93. ORDER BY E.JOB_ID DESC;

  94. --문제10) EMPLOYEES 테이블에서
  95. --50번 부서의 최소 급여를 받는 사원 보다 많은 급여를 받는 사원의 정보를
  96. --사원번호,이름,업무,입사일자,급여,부서번호를 출력하라. 
  97. --단 50번은 제외
  98. SELECT
  99.     EMPLOYEE_ID,FIRST_NAME,JOB_ID,HIRE_DATE,SALARY,DEPARTMENT_ID
  100. FROM EMPLOYEES
  101. WHERE SALARY > (SELECT
  102.     MIN(SALARY)
  103. FROM EMPLOYEES
  104. WHERE DEPARTMENT_ID = '50') AND DEPARTMENT_ID != '50'
  105. ORDER BY DEPARTMENT_ID;

  106. --문제11) EMPLOYEES 테이블에서
  107. --50번 부서의 최고 급여를 받는 사원 보다 많은 급여를 받는 사원의 정보를
  108. --사원번호,이름,업무,입사일자,급여,부서번호를출력하라. 
  109. --단50번은 제외
  110. SELECT
  111.     DEPARTMENT_ID,FIRST_NAME,JOB_ID,HIRE_DATE,SALARY,DEPARTMENT_ID
  112. FROM EMPLOYEES
  113. WHERE SALARY > (SELECT
  114.     MAX(SALARY)
  115. FROM EMPLOYEES
  116. WHERE DEPARTMENT_ID = '50'
  117. GROUP BY DEPARTMENT_ID) AND DEPARTMENT_ID != '50'
  118. ORDER BY SALARY;