클라우드/OracleDB - 엔지니어 기준

No.58 - Database2 : 데이터베이스 문제 모음

kyudon 2022. 8. 9. 11:51

[문제]
1. HR 부서에서 예산 문제로 인해 급여가 $12,000가 넘는 사원의 성과 급여를 표시하는 보고서가 필요합니다. 

select last_name, salary 
from employees 
where salary>12000;


2.사원 번호 176의 성과 부서 ID를 표시

select last_name, department_id 
from employees 
where employee_id=176;



3. HR 부서에서 급여가 높은 사원과 급여가 낮은 사원을 찾아야 합니다. 급여가 $5,000 ~ $12,000의 범위에 속하지 않는 모든 사원의 성 및 급여를 표시하도록 하세요.

select last_name, salary 
from employees 
where salary not between 5000 and 12000;



4.Matos 및 Taylor라는 성을 가진 사원의 성, 직무 ID, 채용 날짜를 표시하는 보고서를 작성합니다. 채용 날짜를 기준으로 오름차순으로 query를 정렬합니다.

select last_name, job_id, hire_date 
from employees 
where last_name='Matos' or last_name='Taylor' 
order by hire_date;



5. 부서 20 또는 50에 속하는 모든 사원의 성과 부서 ID를 last_name별로 오름차순으로 정렬하여 표시합니다.

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



6. $5,000 ~ $12,000의 급여를 받고 부서 20 또는 50에 속하는 사원의 성과 급여를 표시하도록 열 레이블을 각각 Employee 및 Monthly Salary로 지정합니다.

select last_name as 'Employee', salary as 'Monthly Salary' 
from employees 
where department_id in (20,50) and (salary between 5000 and 12000);



7. HR 부서에서 2006년에 채용된 모든 사원의 성과 채용 날짜를 표시하는 보고서를 요구합니다

select last_name, hire_date
from employees
where hire_date between 06/01/01 and 06/12/31


8. 담당 관리자가 없는 모든 사원의 성과 직책을 표시하는 보고서를 작성합니다.

select last_name, job_id 
from employees 
where manager_id is null;



9. 커미션을 받는 모든 사원의 성, 급여 및 커미션을 표시하는 보고서를 작성합니다. 급여 및 커미션을 내림차순으로 데이터를 정렬합니다. ORDER BY 절에서 열의 숫자 위치를 사용합니다.

select last_name, salary, commission_pct 
from employees 
where commission_pct is not null
order by 2 desc, 3 desc;



10. 이름의 세 번째 문자가 "a"인 모든 사원의 성을 표시합니다.

select last_name
from employees 
where first_name like '__a%';


11. 성에 "a"와 "e"가 모두 포함된 모든 사원의 성을 표시합니다.

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



12. 직무가 판매 사원이나 자재 담당자이고 급여가 $2,500, $3,500 또는 $7,000가 아닌 모든 사원의 성, 직무 및 급여를 표시합니다.

select last_name,b.job_title, salary
from employees A join jobs B
on(A.job_id = B.job_id)
where job_title in('Sales Representative','Stock Manager')
and salary not in(2500,3500,7000);



13. 커미션 금액이 20%인 모든 사원의 성, 급여 및 커미션을 표시하도록 실행합니다.

select last_name, salary, commission_pct
from employees 
where commission_pct=0.2;

[문제]
1. 시스템 날짜를 표시하기 위한 query를 작성합니다. 열 레이블을 Date로 지정합니다.

select sysdate as "Date" from dual;


2. HR 부서에서 각 사원에 대해 사원 번호, 성, 급여 및 15.5% 인상된 급여(정수로 표현)를 표시하는 보고서가 필요합니다. 열 레이블을 New Salary로 지정합니다.

select employee_id, last_name, salary, salary+salary*0.155 as "New Salary" 
from employees;

혹은 

SELECT employee_id, last_name, salary,
ROUND(salary * 1.155, 0) "New Salary"
FROM employees;


3. 새 급여에서 이전 급여를 뺀 열을 추가하도록 2번의 query를 수정합니다. 열 레이블을 Increase로 지정합니다. 

select employee_id, last_name, salary, salary+salary*0.155 as "New Salary",
(salary+salary*0.155)-salary as "increase"
from employees;

혹은

SELECT employee_id, last_name, salary,
ROUND(salary * 1.155, 0) "New Salary",
ROUND(salary * 1.155, 0) - salary "Increase"
FROM employees;


4. "J", "A" 또는 "M"으로 시작하는 이름을 가진 모든 사원의 성(첫번째 문자는 대문자,나머지는 모두 소문자)과 성의 길이를 표시하는 query를 작성합니다. 각 열에 적절한 레이블을 지정합니다. 사원의 성을 기준으로 결과를 정렬합니다.

SELECT INITCAP(last_name) "Name",
LENGTH(last_name) "Length"
FROM employees
WHERE last_name LIKE 'J%'
OR last_name LIKE 'M%'
OR last_name LIKE 'A%'
ORDER BY last_name;


5. HR 부서에서 각 사원의 근속 기간을 파악하려고 합니다. 각 사원에 대해 성을 표시하고 채용일부터 오늘까지 경과한 개월 수를 계산합니다. 열 레이블을 ONTHS_WORKED로지정합니다. 재직 개월 수에 따라 결과를 정렬합니다. 개월 수는 가장 가까운 정수로 반올림해야 합니다

SELECT last_name, ROUND(MONTHS_BETWEEN(
SYSDATE, hire_date)) MONTHS_WORKED
FROM employees
ORDER BY months_worked;


6. 모든 사원의 성과 급여를 표시하기 위한 query를 작성합니다. 급여가 15자 길이로 표시되고 왼쪽에 $ 기호가 채워지도록 형식을 지정합니다. 열 레이블을 SALARY로 지정합니다.

select last_name, LPAD(salary,15,'$') as "SALARY"
from employees;


8. 사원의 성을 표시하고 급여 액수를 별표로 나타내는 query를 작성합니다. 각 별표는 $1,000을 나타냅니다. 급여의 내림차순으로 데이터를 정렬합니다. 열 레이블을 EMPLOYEES_AND_THEIR_SALARIES로 지정합니다.

select last_name, concat(salary/1000,'*') as "EMPLOYEES_AND_THEIR_SALARIES"
from employees
order by salary desc;


9. 부서 90의 모든 사원에 대해 성 및 재직 기간(주 단위)을 표시하도록 query를 작성합니다. 주를 나타내는 숫자 열의 레이블을 TENURE로 지정합니다. 주를 나타내는 숫자 값을 소수점 왼쪽에서 truncate합니다. 직원 재직 기간의 내림차순으로 레코드를 표시합니다.

select trunc((sysdate-hire_date)/7) as "TENURE"
from employees
where department_id=90
order by hire_date;
728x90