티스토리 뷰
180904_Oracle_문제풀이
-- 문제1) hr.employees 테이블에서 입사일(hire_date) 정보 중에서 1, 2, 3월 입사자만 출력하는 쿼리 작성. IN 연산자 사용. SELECT employee_id, first_name, last_name, hire_date FROM hr.employees WHERE TO_CHAR(hire_date, 'MM') IN (01, 02, 03); -- 문제2) hr.employees 테이블에서 job_id가 Manager('SA_MAN', 'ST_MAN', 'PU_MAN', 'AC_MGR')인 경우 출력하는 쿼리 작성. IN 연산자 사용. SELECT employee_id, first_name, last_name, job_id FROM hr.employees WHERE job_id IN ('SA_MAN', 'ST_MAN', 'PU_MAN', 'AC_MGR'); -- 문제3) hr.employees 테이블에서 급여(salary)가 10000 이상이면서, 커미션(commission_pct)이 없는(값으로 NULL을 가진) 경우 출력하는 쿼리 작성. IS 연산자 사용. SELECT employee_id, first_name, last_name, salary, commission_pct FROM hr.employees WHERE salary >= 10000 AND commission_pct IS NULL; -- 문제4) hr.employees 테이블에서 급여(salary) 수준에 따라서 'A', 'B', 'C' 등급으로 출력하는 쿼리 작성. CASE~END 구문 사용. -- 급여가 20000 이상인 경우 'A' -- 급여가 10000 이상인 경우 'B' -- 급여가 10000 미만인 경우 'C' SELECT employee_id, first_name, last_name, salary, CASE WHEN TRUNC(salary/10000) = 2 THEN 'A' WHEN TRUNC(salary/10000) = 1 THEN 'B' WHEN TRUNC(salary/10000) = 0 THEN 'C' END "GRADE" FROM hr.employees; -- 4번 틀림. CASE-END문 공부할것. -- 문제5) insa 테이블에서 전화번호(tel)가 있으면 '-'을 제거하고 출력하고, 없으면 '전화번호없음'을 출력하는 쿼리 작성. DECODE, REPLACE 함수 사용. SELECT num, name, tel, DECODE(tel, NULL, '전화번호없음', REPLACE(tel, '-', '')) "tel1" FROM insa; -- 문제6) hr.employees 테이블에서 입사일(hire_date) 정보 중에서 년도별로 인원수 출력하는 쿼리 작성. GROUP BY 구문, COUNT 함수 사용. SELECT TO_CHAR(hire_date, 'YYYY'), COUNT(*) "인원수" FROM hr.employees GROUP BY TO_CHAR(hire_date, 'YYYY'); -- 6번 틀림. COUNT(*) 하기전에 무엇을 기준으로 할지 정해야함. -- 문제7) insa 테이블에서 전체인원수, 남자인원수, 여자인원수를 동시 출력하는 쿼리 작성. COUNT, DECODE 함수 사용. -- 출력 예) -- 전체인원수 남자인원수 여자인원수 -- 60 31 29 SELECT COUNT(*) "전체인원수", COUNT(DECODE(SUBSTR(ssn, 8, 1), 1, 1)) "남자직원수", COUNT(DECODE(SUBSTR(ssn, 8, 1), 2, 1)) "여자직원수" FROM insa; -- 7번 틀림, DECODE 활용법 다시 생각하기 -- 문제8) hr.employees 테이블에서 급여(salary)를 많이 받는 직원부터 순서대로 출력하되, 순번 부여해서 출력하는 쿼리 작성. ROW_NUMBER() 함수 사용. SELECT employee_id, first_name, last_name, salary, ROW_NUMBER() OVER(ORDER BY salary DESC) "RANK" FROM hr.employees; -- 문제9) hr.employees 테이블에서 employee_id가 150인 사원과 같은 급여를 받는 사원 출력하는 쿼리 작성. 서브 쿼리 사용. SELECT employee_id, first_name, last_name, salary FROM hr.employees WHERE salary IN (SELECT salary FROM hr.employees WHERE employee_id = 150); -- 문제10) hr.employees 테이블에서 department_id가 100인 사원 정보 중에서 job_id, salary가 일치하는 사원 출력하는 쿼리 작성. 서브 쿼리 사용. SELECT employee_id, first_name, last_name, department_id FROM hr.employees WHERE (job_id, salary) IN (SELECT job_id, salary FROM hr.employees WHERE department_id = 100); -- 문제11) hr.employees 테이블에서 사원 정보 출력시, 부서명(hr.departments 테이블의 department_name)을 같이 출력하는 쿼리 작성. 연관 서브쿼리 사용. SELECT employee_id, first_name, last_name, (SELECT department_name FROM hr.departments WHERE department_id = e.department_id) department_name FROM hr.employees e; -- 11번 틀림. 연관서브쿼리의 개념 다시 이해. -- 문제12) hr.employees, hr.jobs 테이블을 조인 지정하고 job_title이 'Stock Manager', 'Stock Clerk'인 직원 정보 출력하는 쿼리 작성. Oracle JOIN 표기법 사용. SELECT employee_id, first_name, last_name, job_title FROM hr.employees e, hr.jobs j WHERE e.job_id = j.job_id AND job_title IN ('Stock Manager', 'Stock Clerk'); -- 문제13) hr.departments 테이블에서 직원이 없는 부서 정보 출력하는 쿼리 작성. LEFT OUTER JOIN 사용. Oracle JOIN 표기법 사용. SELECT department_name, employee_id, first_name, last_name FROM hr.employees e, hr.departments d WHERE d.department_id = e.department_id(+) AND employee_id IS NULL; -- 13번 틀림. 직원이 없는 부서 정보만 출력해야 하므로 employee_id IS NULL 추가. -- 문제14) hr.employees 테이블에서 말단 직원(부하 직원이 없는 직원) 정보 출력하는 쿼리 작성. SELF JOIN + OUTER JOIN 사용. Oracle JOIN 표기법 사용. SELECT e1.employee_id, e1.first_name, e1.last_name, e2.employee_id, e2.first_name, e2.last_name FROM hr.employees e1, hr.employees e2 WHERE e1.employee_id = e2.manager_id(+) AND e2.manager_id IS NULL; -- 14번 틀림. 부하직원이 없는 사람이 나와야 하므로 e2.manager_id에 OUTER JOIN을 해야함.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ない형
- 번호자동증가
- git설치
- PreparedStatement
- た형
- 버전 업그레이드
- 일본어 공부
- 직원관리
- 동사 た
- 성적관리
- Java
- 토비의스프링
- JDBC
- Database
- oracle
- 취업성공패키지
- 저장소생성
- AH02102
- 초기설정
- た
- 설치
- Apache24
- て형
- 동사의 활용
- git
- mysql 8.0
- 일본어
- 외부접속
- 동사의활용
- ない
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함