관리 메뉴

nalaolla

hr스키마 테스트 본문

ORACLE

hr스키마 테스트

날아올라↗↗ 2015. 12. 21. 15:57
728x90
  1. SELECT * FROM tab;
  2.  
  3. SELECT * FROM employees;
  4.  
  5. SELECT DISTINCT job_id FROM employees;
  6. SELECT ALL job_id FROM employees;
  7.  
  8. --1.사원테이블에서 사원번호와 급여를 출력하시오.
  9. SELECT employee_id,salary FROM employees;
  10. --2.사원테이블에서 사원번호와 급여를 내림차순으로 출력하시오.
  11. SELECT employee_id,salary FROM employees
  12. ORDER BY salary DESC;
  13.  
  14. --3.사원테이블에서 사원번호와 급여를 내림차순으로 출력하시오.
  15. -- 단 사원번호가 200번 이상인 사람들만.
  16. SELECT employee_id,salary FROM employees
  17. WHERE employee_id >= 200
  18. ORDER BY salary DESC;
  19.  
  20. --4.사원테이블에서 직업아이디는 순정렬,급여는 역정렬해서
  21. --출력하시오.
  22. SELECT job_id,salary FROM employees
  23. ORDER BY job_id ASC,salary DESC;
  24.  
  25. --4.사원테이블에서 직업아이디는 순정렬,급여는 역정렬해서
  26. --출력하시오.
  27. -- 단, 사원번호가 200번 이상인 사람들만.
  28. SELECT job_id AS "업무코드",salary AS "급여 $" FROM employees
  29. WHERE employee_id >= 200
  30. ORDER BY job_id ASC,salary DESC;
  31.  
  32.  
  33. SELECT department_id FROM employees
  34. ORDER BY department_id ASC;
  35.  
  36. --5.사원테이블에서 10번 부서에서 근무하는 사원들의
  37. --사번과 부서번호를 출력하시오.
  38. SELECT employee_id,department_id FROM employees
  39. WHERE department_id=10;
  40.  
  41. --6.사원테이블에서 업무코드가 IT_PROG인 사원들의
  42. --사번과 부서번호를 출력하시오.
  43. SELECT employee_id,department_id FROM employees
  44. WHERE job_id = 'IT_PROG';
  45.  
  46.  
  47. --7.사원테이블에서 급여가 6000이상 15000이하인 사원들의
  48. --사번과 사원명,급여를 출력하시오.
  49. SELECT employee_id,first_name,last_name,salary,hire_date
  50. FROM employees
  51. WHERE salary >= 6000 AND salary <= 15000;
  52.  
  53. --8.사원테이블에서 입사일이 2006/01/03인 사원의
  54. --사원번호와 이름을 출력하시오.
  55. SELECT employee_id,first_name,last_name
  56. FROM employees
  57. WHERE hire_date='2006/01/03';
  58.  
  59. --9.사원테이블에서 10번부서의 사원번호와 사원명,
  60. --급여의 110%를 출력하세요.
  61. SELECT employee_id,first_name,last_name,
  62. salary "오리지날",salary*1.1 "110%"
  63. FROM employees
  64. WHERE department_id=10;
  65.  
  66. SELECT first_name,last_name,salary
  67. FROM employees;
  68.  
  69. SELECT first_name||' '||last_name||'님의 급여는['||salary||']입니다.' emp_salary
  70. FROM employees;
  71.  
  72. SELECT chr(65) FROM employees;
  73.  
  74.  
  75. SELECT department_name FROM departments;
  76.  
  77. SELECT REPLACE(department_name,
  78. 'IT','Information Technology')
  79. FROM departments;
  80.  
  81. SELECT INSTR('CORPORATE FLOOR','OR'1,3) FROM dual;
  82. SELECT INSTR('010-1111-1111','-',1,2) FROM dual;
  83.  
  84. SELECT length('yangssem') FROM dual;
  85.  
  86. --사원의  first_name이 7글자 이상인 사원명만 출력하시오.
  87. SELECT first_name,last_name FROM employees
  88. WHERE length(first_name) >= 7;
  89.  
  90. --사원테이블에서 커미션을 받지않는 사람들은 0.5로 설정해서 출력하시오.
  91. SELECT employee_id,commission_pct FROM employees;
  92.  
  93. SELECT employee_id,nvl(commission_pct,0.5) commission_pct FROM employees;
  94.  
  95. SELECT employee_id,nvl2(commission_pct,1.0,0.5) commission_pct FROM employees;
  96.  
  97. --실지급액 출력
  98. SELECT employee_id,
  99. nvl2(commission_pct,1.0,0.5) commission_pct ,
  100. salary "적용전급여",
  101. salary+salary*nvl2(commission_pct,1.0,0.5) "적용후급여"
  102. FROM employees;
  103.  
  104. SELECT sysdate FROM dual;
  105.  
  106. SELECT add_months(sysdate,1) FROM dual;
  107.  
  108. SELECT count(employee_id) FROM employees;
  109. SELECT count(employee_id) 사원수 FROM employees
  110. WHERE department_id=20;
  111.  
  112. SELECT count(COMMISSION_PCT) FROM employees;
  113. SELECT count(manager_id) FROM employees;
  114.  
  115. --Q1:연봉 8000이상인 사원들의
  116. --부서별 평균연봉의 반올림값을 출력하라.
  117. SELECT DEPARTMENT_ID,ROUND(AVG(SALARY))
  118. FROM EMPLOYEES
  119. WHERE SALARY>=8000
  120. GROUP BY DEPARTMENT_ID;
  121.  
  122.  
  123. --주의 ) 부서별 평균연봉이8000 이상인 사원들의 
  124. --평균연봉을 반올림해서 출력하는 것과는 다르다.
  125. SELECT DEPARTMENT_ID,ROUND(AVG(SALARY))
  126. FROM EMPLOYEES
  127. GROUP BY DEPARTMENT_ID
  128. HAVING avg(salary)>=8000
  129.  
  130.  
  131. --Q2:연봉 8000이상인 사원들의 부서별 평균연봉의 반올림값
  132. --을 부서번호의 내림차순으로 정렬하라 
  133. SELECT DEPARTMENT_ID,ROUND(AVG(SALARY))
  134. FROM EMPLOYEES
  135. WHERE SALARY>=8000
  136. GROUP BY DEPARTMENT_ID
  137. ORDER BY DEPARTMENT_ID DESC
  138. --Q3:연봉 8000이상인 사원들의 부서별 평균연봉의 반올림값
  139. --을 평균연봉의 반올림값으로 오름차순 정렬하라
  140. SELECT DEPARTMENT_ID,
  141. ROUND(AVG(SALARY)) AS R
  142. FROM EMPLOYEES
  143. WHERE SALARY>=8000
  144. GROUP BY DEPARTMENT_ID
  145. ORDER BY R ASC;
  146.  
  147.  
  148. --Q4:연봉 10000이상인 사원들의 부서별 평균연봉의 반올림값
  149. --을 부서번호로 오름차순 정렬하라     
  150. SELECT DEPARTMENT_ID,ROUND(AVG(SALARY)) AS R
  151. FROM EMPLOYEES
  152. WHERE SALARY>=10000
  153. GROUP BY DEPARTMENT_ID
  154. ORDER BY DEPARTMENT_ID ASC;   
  155.  
  156. --Q5:각 부서별 같은 업무를 하는 사람의 인원수를 구하여   
  157. --부서번호,업무명,인원수를 출력하라.       
  158. --(단, 부서번호와 업무명으로 각각 내림차순 정렬!) 
  159. SELECT DEPARTMENT_ID,JOB_ID,count(*)
  160. FROM EMPLOYEES
  161. GROUP BY DEPARTMENT_ID, JOB_ID
  162. ORDER BY DEPARTMENT_ID DESC,  JOB_ID DESC;   
  163.  
  164.  
  165. -- //Q6:사원 테이블에서 연봉과 사원ID를 출력하되
  166. --연봉이 12000인 사원은 고액연봉자라고 출력하라.     
  167. SELECT salary,employee_id,
  168. decode(salary,12000,'고액연봉자')
  169. FROM employees;   
  170.  
  171. --//Q7:사원 테이블에서 연봉과 사원ID를 출력하되
  172. --연봉이 12000이상인 사원은 비고에 고액연봉자라고
  173. --출력하라.  (단, 최고연봉액은 24000이다.)
  174. SELECT salary,employee_id,
  175. case
  176.   when salary BETWEEN 12000 AND 24000 then '고액연봉자'
  177. end 비고
  178. FROM employees;   
  179.  
  180. --//Q8:사원 테이블에서 연봉과 사원ID를 출력하되
  181. --연봉이 20000이상인 사원은 1급연봉자, 
  182. --연봉이 15000이상인 사원은 2급연봉자,   
  183. --연봉이 기타연봉인 사원은 3급연봉자  라고 출력하라.     
  184. SELECT salary,employee_id,   
  185. case
  186.   when salary >= 20000 then '1급연봉자'
  187.   when salary >= 15000 then '2급연봉자'
  188.   else '3급'   
  189. end 비고 
  190. FROM employees;
  191.  
  192.  
  193. SELECT
  194. employees.employee_id,
  195. employees.department_id,
  196. departments.department_name
  197. FROM employees,departments
  198. WHERE employees.department_id=departments.department_id;
  199.  
  200. SELECT count(*) FROM employees;
  201. SELECT count(*) FROM departments;
  202. SELECT 107*27 FROM dual;
  203.  
  204. SELECT e.employee_id 사원ID,d.location_id 근무지ID
  205. FROM employees e,departments d
  206. WHERE e.department_id = d.department_id
  207. AND e.employee_id=100;
  208.  
  209. SELECT e.employee_id 사원ID,d.location_id 근무지ID
  210. FROM employees e JOIN departments d
  211. ON e.department_id = d.department_id
  212. AND e.employee_id=100;
  213.  
  214. SELECT
  215. e.employee_id,
  216. e.department_id,
  217. d.department_name
  218. FROM employees e JOIN departments d
  219. ON e.department_id=d.department_id;
  220.  
  221. --2)사원테이블과 부서테이블,업무테이블을 조인해서
  222. --사원ID가 100인 사람의 사원ID와 근무지ID, 업무제목를 출력해라.
  223. SELECT e.employee_id 사원ID, 
  224. d.location_id 근무지ID,
  225. j.job_title 업무제목
  226. FROM employees   e
  227. JOIN departments d  ON  e.department_id = d.department_id
  228. JOIN jobs j         ON j.job_id = e.job_id
  229. AND e.employee_id=100;
  230.  
  231. --Q1) employees 와 departments 테이블을 조인하여
  232. --사원이름이 ‘Steven’인 사원의 이름과 성, 부서명을 출력하되
  233. --부서명이  Executive일때는 행정부, Shipping일때는 발송부라고 출력하라. 
  234. SELECT e.first_name 이름,
  235. e.last_name 성, 
  236. decode(d.department_name,
  237.         'Executive','행정부',
  238.         'Shipping','발송부') 부서명
  239. FROM employees e, departments d
  240. WHERE e.department_id=d.department_id
  241. AND e.first_name='Steven'
  242.  
  243. SELECT e.first_name 이름,
  244. e.last_name 성, 
  245. decode(d.department_name,
  246.         'Executive','행정부',
  247.         'Shipping','발송부') 부서명
  248. FROM employees e JOIN departments d
  249. ON e.department_id=d.department_id
  250. AND e.first_name='Steven'
  251.  
  252.  
  253. --Q2) employees 와 departments 테이블을 조인하여
  254. --급여가 12000이상인 사원의 부서ID,부서명,이름,급여를 출력하라.
  255. --(급여의 내림차순으로 정렬) 
  256. SELECT e.department_id 부서ID,
  257. d.department_name 부서명,         
  258. e.first_name 이름,
  259. e.last_name 성,
  260. e.salary 급여
  261. FROM employees e, departments d
  262. WHERE e.department_id = d.department_id
  263. AND e.salary >= 12000
  264. ORDER BY salary DESC;
  265.  
  266.  
  267. SELECT e.department_id 부서ID,
  268. d.department_name 부서명,         
  269. e.first_name 이름,
  270. e.last_name 성,
  271. e.salary 급여
  272. FROM employees e JOIN departments d
  273. ON e.department_id = d.department_id
  274. AND e.salary >= 12000
  275. ORDER BY salary DESC;
  276.  
  277.  
  278.  
  279. SELECT e.department_id 부서ID,
  280. d.department_name 부서명,         
  281. e.first_name 이름,
  282. e.last_name 성,
  283. e.salary 급여
  284. FROM employees e CROSS JOIN departments d ;
  285.  
  286. SELECT * FROM jobs;
  287.  
  288.  
  289. --1.비교연산자 사용 
  290. SELECT e.employee_id, e.salary, j.job_title 
  291. FROM employees e, jobs j
  292. WHERE e.salary >= 15000 AND e.salary <= j.max_salary; 
  293.  
  294. --2.~BEWEEN ~AND~사용 
  295. SELECT e.employee_id, e.salary, j.job_title 
  296. FROM employees e, jobs j     
  297. WHERE e.salary BETWEEN 15000 AND j.max_salary; 
  298.  
  299.  
  300.  
  301. --문제2>사원테이블과 업무테이블을 조인 (표준조인) 해서
  302. --급여가 15000이상   최고연봉이하인 사원ID, 급여, 업무제목을 출력하라.
  303. SELECT e.employee_id, e.salary, j.job_title
  304. FROM employees e
  305. JOIN jobs j ON e.salary BETWEEN 15000 AND j.max_salary;
  306.  
  307. --예)employees 테이블에서 자신의 매니저의 이름을 검색하세요.
  308. SELECT e1.employee_id,
  309. e1.first_name ||' 의 매니저 '|| nvl(e2.first_name,'없음') 
  310. FROM employees e1,employees e2
  311. WHERE e1.manager_id=e2.employee_id
  312. ORDER BY e1.employee_id ASC;
  313.  
  314.  
  315. SELECT e1.employee_id,
  316. e1.first_name ||' 의 매니저 '|| nvl(e2.first_name,'없음') 
  317. FROM employees e1,employees e2
  318. WHERE e1.manager_id=e2.employee_id (+)
  319. ORDER BY e1.employee_id ASC;
  320.  
  321.  
  322. SELECT e.employee_id, e.first_name, d.department_name   
  323. FROM employees e, departments d   
  324. WHERE e.department_id(+) = d.department_id   
  325. ORDER BY e.employee_id DESC;
  326.  
  327. SELECT e.employee_id, e.first_name, d.department_name   
  328. FROM employees e LEFT OUTER JOIN departments d   
  329. ON e.department_id = d.department_id   
  330. ORDER BY e.employee_id DESC;
  331.  
  332.  
  333. SELECT e.employee_id, e.first_name, d.department_name   
  334. FROM employees e RIGHT OUTER JOIN departments d   
  335. ON e.department_id = d.department_id   
  336. ORDER BY e.employee_id DESC;
  337.  
  338.  
  339. SELECT e.employee_id, e.first_name, d.department_name   
  340. FROM employees e full OUTER JOIN departments d   
  341. ON e.department_id = d.department_id   
  342. ORDER BY e.employee_id DESC;
  343.  
  344.  
  345.  
  346. SELECT e.employee_id, e.first_name, d.department_name   
  347. FROM employees e JOIN departments d   
  348. USING(department_id);
  349.  
  350.  
  351. --1.사원 테이블과 부서 테이블을 조인하여 모든 사원ID,
  352. --사원이름,급여,부서명을  출력하라. (부서명 내림차순 정렬) 
  353. SELECT e.employee_id 사원ID, e.first_name 사원이름, 
  354. e.salary 급여, d.department_name 부서명
  355. FROM employees e LEFT OUTER JOIN departments d 
  356. USING(department_id) ORDER BY d.department_name DESC;
  357.  
  358.  
  359. --2. 사원 테이블과 부서 테이블을 조인하여 직업ID가
  360. --‘IT_PROG‘ 인 사원들의 사원이름, 직업ID,부서명, 위치ID를 출력하세요.
  361. SELECT e.first_name 사원이름, e.job_id 직업ID,
  362. d.department_name 부서명,  d.location_id 위치ID
  363. FROM employees e INNER JOIN departments d
  364. ON e.department_id=d.department_id AND job_id='IT_PROG'
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371. --3. 부서 테이블과 사원 테이블,업무테이블에서 사번, 사원명, 업무, 급여 ,
  372. --부서명을  검색하시오. 단, 업무명이 '%Manager' 이며
  373. --급여가 8000 이상인  사원에 대하여 사번을 기준으로 오름차순 정렬할 것.
  374. SELECT e.employee_id 사번, e.first_name 사원명,
  375. j.job_title 업무명,   e.salary 급여,
  376. d.department_name 부서명
  377. FROM employees e
  378. JOIN departments d ON e.department_id = d.department_id 
  379. JOIN jobs j ON j.job_id = e.job_id
  380. AND job_title LIKE '%Manager'
  381. AND e.salary>=8000
  382. ORDER BY e.employee_id ASC
  383.  
  384.  
  385.  
  386.  
  387.  
  388. --MAIN-QUERY 
  389. SELECT * FROM employees
  390. WHERE salary <
  391. (SELECT  ROUND(AVG(salary),0) FROM employees);
  392.  
  393. -- SUB-QUERY
  394. SELECT  ROUND(AVG(salary),0) FROM employees; 
  395.  
  396.  
  397. --Q1)  입사번호(사원ID)가 103인 사원과 같은 직업(job_id)을 가진
  398. --사원들의 정보를 출력하시오. 
  399. SELECT employee_id, first_name||' '||last_name, job_id 
  400. FROM employees
  401. WHERE job_id = 
  402. (  SELECT job_id FROM employees WHERE employee_id=103 );
  403.  
  404.  
  405. --Q2) Diana Lorentz와 같은 부서의 사원들의 정보를 출력하시오. 
  406. SELECT * FROM employees 
  407. WHERE department_id =   
  408. ( SELECT department_id FROM employees       
  409.   WHERE first_name='Diana' AND last_name='Lorentz' );
  410.  
  411.  
  412. SELECT first_name||' '||last_name,job_id,hire_date,
  413. salary,department_id 
  414. FROM employees
  415. WHERE salary IN 
  416. ( 4200);
  417.  
  418. SELECT first_name||' '||last_name,job_id,hire_date,
  419. salary,department_id 
  420. FROM employees
  421. WHERE salary IN 
  422. ( SELECT MIN(salary) FROM employees GROUP BY job_id);
  423.  
  424.  
  425.  
  426.  
  427.  
  428. --사원 테이블에서
  429. --업무별로 평균 급여가 14000이상인 사원의
  430. --최소급여보다 많은 급여를 받는 사원의 정보를
  431. --사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.
  432. SELECT first_name||' '||last_name,job_id,hire_date,
  433. salary,department_id 
  434. FROM employees
  435. WHERE salary > ANY( SELECT avg(salary) FROM employees
  436. WHERE salary>=14000 GROUP BY job_id);   
  437.  
  438. --사원 테이블에서
  439. --업무별로 평균 급여가 14000이상인 사원의
  440. --최대급여보다 적은 급여를 받는 사원의 정보를
  441. --사원번호,이름,업무,입사일자,급여,부서번호를 출력하라.
  442. SELECT first_name||' '||last_name,job_id,hire_date,
  443. salary,department_id 
  444. FROM employees
  445. WHERE salary < ANY( SELECT avg(salary) FROM employees
  446. WHERE salary>=14000 GROUP BY job_id)
  447.  
  448. SELECT avg(salary) FROM employees
  449. WHERE salary>=14000 GROUP BY job_id;
  450.  
  451.  
  452. --복수행 복수 컬럼
  453. SELECT first_name||' '||last_name,job_id,hire_date,
  454. salary,department_id 
  455. FROM employees
  456. WHERE (job_id,salary) IN 
  457. ( SELECT job_id, MIN(salary) FROM employees GROUP BY job_id);
  458.  
  459. SELECT job_id, MIN(salary) FROM employees GROUP BY job_id;
  460.  
  461.  
  462.  
  463. --모든사원들의 각 사원별 금액을 출력하되
  464. --해당 사원보다 적은금액을 받는 사원들 중에서
  465. --가장 금액이 놓은 사원정보를 출력하라.
  466.  
  467.  
  468. SELECT employee_id,salary
  469. FROM employees
  470. WHERE salary=(SELECT max(salary)
  471. FROM employees
  472. WHERE salary<any(SELECT salary FROM employees
  473. WHERE employee_id=108));
  474.  
  475.  
  476. --‘David Austin’의 직업을 ‘John Chen’인 사람의 직업과
  477. --같은 직업으로 변경하세요
  478. SELECT job_id FROM employees
  479. WHERE first_name='David' AND last_name='Austin';
  480.  
  481. SELECT job_id FROM employees
  482. WHERE first_name='John' AND last_name='Chen';
  483.  
  484. UPDATE employees SET job_id=(SELECT job_id FROM employees
  485. WHERE first_name='John' AND last_name='Chen')
  486. WHERE first_name='David' AND last_name='Austin';
  487.  
  488. --‘John Chen’과 연봉이 같은 사람들의
  489. --직업을 ‘John Chen’인 사람의 직업과
  490. --같은 직업으로 변경하세요
  491. UPDATE employees SET job_id=(SELECT job_id FROM employees
  492. WHERE first_name='John' AND last_name='Chen')
  493. WHERE salary = (SELECT salary FROM employees
  494. WHERE first_name='John' AND last_name='Chen');
  495.  
  496. SELECT salary FROM employees
  497. WHERE first_name='John' AND last_name='Chen';
  498.  
  499. SELECT job_id,first_name,salary FROM employees
  500. WHERE salary=8200;
  501.  
  502.  
  503. --최소급여를 받는 사원들을 삭제 하라.
  504. --확인 출력하시오.
  505. SELECT employee_id,first_name,salary
  506. FROM employees
  507. WHERE salary = (SELECT min(salary) FROM employees);
  508.  
  509. DELETE FROM employees
  510. WHERE salary = (SELECT min(salary) FROM employees);
  511.  
  512. --1. 사원과 부서 TABLE을 JOIN하여 부서ID,부서명,이름,급여를 출력하라.  (단,ANSI JOIN을  사용하라.)
  513. SELECT d.department_id,d.department_name,
  514. first_name||' '||last_name,salary
  515. FROM employees e JOIN departments d
  516. ON e.department_id = d.department_id; 
  517.  
  518. SELECT department_id,department_name,
  519. first_name||' '||last_name,salary
  520. FROM employees JOIN departments USING (department_id)
  521.  
  522. --2. 이름이 'Steven'인 사원의 부서명을 출력하라.
  523. SELECT department_id,department_name
  524. FROM departments
  525. WHERE department_id IN
  526. (SELECT department_id FROM employees WHERE first_name='Steven')
  527.  
  528.  
  529. --3. 부서TABLE에 있는 모든 부서를 출력하고,
  530. --사원 TABLE에 있는 DATA와 JOIN하 여
  531. --모든 사원의 이름,부서ID,부서명,급여를 출력하라.
  532. SELECT department_name FROM departments;
  533.  
  534. SELECT first_name||' '||last_name,
  535. department_id,department_name,salary
  536. FROM employees LEFT OUTER JOIN departments
  537. USING (department_id);
  538.  
  539. SELECT first_name||' '||last_name,
  540. department_id,department_name,salary
  541. FROM employees full OUTER JOIN departments
  542. USING (department_id);
  543.  
  544.  
  545. --4. 사원TABLE에 있는 모든 employee_id와 manager_id을
  546. --이용하여 서로의 관계를 다음과 같이 출력하라.
  547. --(예:Neena 의 매니져는 Steven이다.
  548. --단 매니저가 없으면 없음  으로 표시할것.)
  549. SELECT e1.first_name||' 의 매니져는 '|| 
  550. nvl(e2.first_name,'없음')  ||' 이다.'
  551. FROM employees e1 LEFT OUTER JOIN employees e2
  552. ON e1.manager_id = e2.employee_id;
  553.  
  554.  
  555.  
  556.  
  557. --5-1. ‘Neena'의 직무와 같은 사원이름,부서ID,급여,직무를 출력하라.
  558. SELECT first_name||' '||last_name,
  559. department_id, salary, job_id 
  560. FROM employees
  561. WHERE job_id =
  562. (SELECT job_id FROM employees WHERE first_name='Neena');
  563.  
  564.  
  565. --5-2. ‘Neena'의 직무와 같은 사원이름,부서명,급여,직무를 출력하라.
  566. SELECT e.first_name||' '||e.last_name,
  567. d.department_name, e.salary, e.job_id 
  568. FROM employees e , departments d
  569. WHERE e.department_id = d.department_id
  570. AND job_id =
  571. (SELECT job_id FROM employees WHERE first_name='Neena');
  572.  
  573.  
  574. --6. ‘John'가 속해있는 부서의 모든 사람의
  575. --부서번호,사원ID,이름,입사일, 급 여를 출력하라.
  576. SELECT first_name||' '||last_name,department_id
  577. FROM employees WHERE first_name='John';
  578. --//헉,,,ㅡ,ㅡ,;; 3명이군 50,80,100번 부서
  579.  
  580. SELECT employee_id,first_name||' '||last_name,       
  581. department_id,hire_date,salary
  582. FROM employees
  583. WHERE department_id IN
  584. (SELECT department_id FROM employees WHERE first_name='John');
  585.  
  586.  
  587. --7-1. 전체 사원의 평균임금보다 많은 사원의 사원번호,
  588. --이름,부서명, 입사일, 급여를 출력하라. 
  589. SELECT e.employee_id,e.first_name||' '||e.last_name,
  590. d.department_name,e.hire_date 
  591. FROM employees e JOIN departments d
  592. ON d.department_id = e.department_id
  593. AND (salary > (SELECT avg(salary) FROM employees));   
  594.  
  595.  
  596. --7-2. 전체 사원의 평균임금보다 많은 사원의 사원번호,
  597. --이름,부서명, 입사일,지역명 , 급여를 출력하라. 
  598. SELECT e.employee_id,e.first_name||' '||e.last_name,
  599. d.department_name,e.hire_date ,loc.city
  600. FROM employees e JOIN departments d
  601. ON d.department_id = e.department_id
  602. JOIN locations loc ON d.location_id = loc.location_id 
  603. AND (salary > (SELECT avg(salary) FROM employees))
  604.  
  605.  
  606.  
  607. --8. 10번 부서 사람들 중에 20번 부서의 사원과 같은 업무를 하는
  608. --사원의 사원번호, 업무,이름,부서명,입사일,지역명을 출력하라.
  609. SELECT job_id FROM employees
  610. WHERE department_id=10;--//AD_ASST
  611. SELECT job_id FROM employees
  612. WHERE department_id=20;--//MK_MAN,MK_REP
  613. --//공통업무가 없지만 오류가 나지 않도록 아래와 같이 실행문을 작성해 주자. 
  614. SELECT e.employee_id,e.job_id,e.first_name,
  615. d.department_name,hire_date ,loc.city
  616. FROM employees e JOIN departments d
  617. ON d.department_id = e.department_id
  618. JOIN locations loc ON d.location_id = loc.location_id
  619. AND e.department_id = 10
  620. AND job_id IN
  621. (SELECT job_id FROM employees WHERE e.department_id=20)
  622.  
  623.  
  624. --9. 10번 부서 중에서 30번 부서에는 없는 업무를 하는
  625. --사원의 사원번호,업무,이 름,부서명,입사일,지역을 출력하라. 
  626. SELECT e.employee_id,e.job_id,e.first_name,
  627. d.department_name,hire_date ,loc.city
  628. FROM employees e JOIN departments d
  629. ON d.department_id = e.department_id
  630. JOIN locations loc ON d.location_id = loc.location_id 
  631. AND e.department_id = 10
  632. AND (job_id NOT IN
  633. (SELECT job_id FROM employees WHERE e.department_id=30));
  634.  
  635.  
  636. --10. 10번 부서와 같은 일을 하는 사원의 사원번호,업무,이름,
  637. --부서번호,부서명, 지역,급여를 급여를 출력하라. 
  638. SELECT e.employee_id,e.job_id,e.first_name,
  639. d.department_name,loc.city,e.salary
  640. FROM employees e JOIN departments d
  641. ON d.department_id = e.department_id
  642. JOIN locations loc
  643. ON d.location_id = loc.location_id 
  644. AND (job_id IN
  645. (SELECT job_id FROM employees WHERE e.department_id=10))
  646.  
  647.  
  648.  
  649. --11.  ‘Neena' 혹은 ‘David'의 급여와 같은 사원의
  650. --사원번호,이름,급여를 출력하라
  651. SELECT employee_id,first_name||' '||last_name,salary
  652. FROM employees
  653. WHERE salary IN
  654. (SELECT salary FROM employees
  655. WHERE first_name='Neena' OR first_name='David')
  656.  
  657. SELECT salary FROM employees
  658. WHERE first_name='Neena' OR first_name='David';
  659.  
  660.  
  661.  
  662. --12. 급여가 30번 부서의 최고 급여보다 높은 사원의
  663. --사원번호,이름,급여를 출력 하라.
  664. SELECT employee_id,first_name||' '||last_name,salary
  665. FROM employees
  666. WHERE salary >all
  667. (SELECT salary FROM employees WHERE department_id=30)
  668.  
  669.  
  670. SELECT employee_id,first_name||' '||last_name,salary
  671. FROM employees
  672. WHERE salary >
  673. (SELECT max(salary) FROM employees WHERE department_id=30)
  674.  
  675.  
  676.  
  677. --13. 급여가 30번 부서의 최저 급여보다 낮은
  678. --사원의 사원번호,이름,급여를 출력 하라.
  679. SELECT employee_id,first_name||' '||last_name,salary
  680. FROM employees
  681. WHERE salary < ALL
  682. (SELECT salary FROM employees WHERE department_id=30)
  683.  
  684. SELECT employee_id,first_name||' '||last_name,salary
  685. FROM employees
  686. WHERE salary <
  687. (SELECT min(salary) FROM employees WHERE department_id=30);
  688.  
  689.  
  690. --14. 급여가 90번 부서의 최저 급여보다 높은 사원의 사원번호,
  691. --이름,급여를 출력 하라.
  692. SELECT employee_id,first_name||' '||last_name,salary
  693. FROM employees
  694. WHERE salary > any
  695. (SELECT salary FROM employees WHERE department_id=90)
  696.  
  697. SELECT employee_id,first_name||' '||last_name,salary
  698. FROM employees
  699. WHERE salary >
  700. (SELECT min(salary) FROM employees WHERE department_id=90);   
  701.  
  702.  
  703.  
  704. --15. 급여가 90번 부서의 최고 급여보다 낮은 사원의
  705. --사원번호,이름,급여를 출력 하라.
  706. SELECT employee_id,first_name||' '||last_name,salary
  707. FROM employees
  708. WHERE salary < any
  709. (SELECT salary FROM employees WHERE department_id=90)
  710.  
  711. SELECT employee_id,first_name||' '||last_name,salary
  712. FROM employees
  713. WHERE salary <
  714. (SELECT max(salary) FROM employees WHERE department_id=90)
  715.  
  716. --16. 사원이름과 부서명을 출력하라.
  717. --(단,뷰나 조인을 사용하지 말고 서브쿼리 쓸 것)
  718. SELECT e.first_name||' '|| e.last_name 사원이름,
  719. (SELECT d.department_name FROM departments d   
  720. WHERE e.department_id = d.department_id ) 부서명
  721. FROM employees e;


728x90