Oracle DB 실습문제

강정우·2022년 7월 1일
0

DB

목록 보기
15/30
post-thumbnail

0. 들어가기 전에...

  1. 문자, 날짜는 작은 따옴표 but 숫자는 그냥 쓴다.
  2. desc는 order by 절에
  3. 03-01-01, 2003-01-01, 03/01/01 다 됨 하지만 성능을 향상시키기 위해선 자동변환 절차가 없는 것이 좋음 == table에 들어간 form대로 써라!!
  4. Data 값들은 ASC 코드로 저장되어있기 때문에 대문자 소문자 철저히 구분!!
  5. distinct 중복제거
  6. join 조건은 반드시 and 연산자 마지막 연산자에도 alias를 붙여주기 마지막 문장이라고 까먹지 않기!!

문제 1

연봉이 150,000 에서 200,000의 범위 이외인 사원드르이 이름 및 연봉을 출력하시오. 단 연봉은 AnnSal로 출력하시오.

select first_name, salary*12 "AnnSal"
from employees
where salary*12 not between 150000 and 200000;

문제 2

2003/01/01 일부터 2005/05/30일 사이에 고용된 사원들의 이름, 사번, 고용일자를 출력하시오. 고용일자를 역순으로 정렬하시오.

select first_name, employee_id, hire_date
from employees
where hire_date between '03/01/01' and '05/05/30'
order by hire_date desc;

문제 3

20번 및 50번 부서에서 근무하는 모든 사원들의 이름 및 부서 번호를 알파벳순으로 출력하시오.

select first_name, department_id
from employees
where department_id in(20,50)
order by first_name;

문제 4

2006년도에 고용된 모든 사람들의 이름 및 고용일을 조회한다.

select first_name, hire_date
from employees
where hire_date like '06%';

문제 5

매니저가 없는 사람들의 이름 및 업무를 출력하시오.

select first_name, job_id
from employees
where manager_id is null;

문제 6

매니저가 있는 사람들의 이름 및 업무, 매니저번호를 조회한다.

select first_name, job_id, manager_id
from employees
where manager_id is NOT null;

문제 7

이름에 a 와 e 글자가 있는 사원의 이름을 조회하시오.

select first_name
from employees
where first_name like '%a%' and first_name like '%e%';

문제 8

급여가 2500,3500,7000이 아니며 직업이 SA_REP나 ST_CLECK인 사원이 이름과, 급여, 직업을 출력하시오.

select first_name, salary, job_id
from employees
where salary not in (2500,3500,7000)
and job_id in('SA_REP','ST_CLERK')

문제 9

30번 부서내의 모든 직업들을 유일한 값으로 출력하시오. 90번 부서 또한 포함하고, 직업을 오름차순으로 출력하시오.

select distinct job_id, department_id
from employees
where department_id in (30,90)
order by job_id;

문제 10

연봉이 150,000 이상인 사원의 이름과 연봉, 그 사원이 근무하는 부서이름과 부서가 위치한 지역번호를 출력하시오. 단, 연봉은 AnnSal로 출력하시오.

select e.first_name, e.salary*12 "AnnSal", d.department_name, d.location_id
from employees e, departments d
where e.department_id = d.department_id
and e.salary*12 >= 150000;

문제 11

커미션을 받는 모든 사람들의 이름, 부서명, 지역 ID 및 도시 명을 출력하시오.

select e.first_name, d.department_name, l.location_id, l.city
from employees e, departments d, locations l
where e.department_id = d.department_id
and d.location_id = l.location_id
and e.commission_pct is not null;

문제 12

자신의 매니저보다 먼저 고용된 사원들의 이름 및 고용일을 출력하시오.

select e.first_name, e.hire_date, m.first_name, m.hire_date
from employees e, employees m
where e.manager_id = e.employee_id
and e.hire_date < m.hire_date
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글