--Q1. HR EMPLOYEES 테이블에서 이름, 연봉, 10% 인상된 연봉을 출력하세요.
--A.
select first_name , salary, salary * 1.1 upsalary from employees;
--Q2. 2005년 상반기에 입사한 사람들만 출력
--A.
select * from employees
where hire_date between '05/01/01' and '05/06/30';
--Q3. 업무 SA_MAN, IT_PROG, ST_MAN 인 사람만 출력
--A.
select * from employees
where job_id in('SA_MAN' ,'IT_PROG','ST_MAN');
--Q4. manager_id 가 101에서 103인 사람만 출력
--A.
select * from employees
where manager_id between 101 and 103;
--Q5. EMPLOYEES 테이블에서 LAST_NAME, HIRE_DATE 및 입사일의 6개월 후 첫 번째 월요일을 출력하세요.
--A.
select last_name , hire_date , next_day(add_months(hire_date,6),'월') "Target" from employees;
--Q6. EMPLOYEES 테이블에서 EMPLPYEE_ID, LAST_NAME, SALARY, HIRE_DATE 및 입사일 기준으로 현재일까지의 W_MONTH(근속월수)를 정수로 계산해서 출력하세요.(근속월수 기준 내림차순)
--A.
select EMPLPYEE_ID, LAST_NAME, SALARY, HIRE_DATE,
truns(months_between(sysdate,hire_date)) w_month
from employees
order by w_month desc;
--Q7. EMPLOYEES 테이블에서 EMPLPYEE_ID, LAST_NAME, SALARY, HIRE_DATE 및 입사일 기준으로 W_YEAR(근속년수)를 계산해서 출력하세요.(근속년수 기준 내림차순)
--A.
select EMPLOYEE_ID, LAST_NAME, SALARY, HIRE_DATE,
trunc((sysdate-hire_date)/365) w_year
from employees
order by w_year desc;
--Q8. EMPLOYEE_ID가 홀수인 직원의 EMPLPYEE_ID와 LAST_NAME을 출력하세요.
--A.
select EMPLOYEE_ID, LAST_NAME from employees
where mod(employee_id, 2)= 1;
--Q9. EMPLOYEES 테이블에서 EMPLPYEE_ID, LAST_NAME 및 M_SALARY(월급)을 출력하세요. 단 월급은 소수점 둘째자리까지만 표현하세요.
--A
select EMPLOYEE_ID, LAST_NAME , trunc(salary/12) m_salary from employees;
--Q10. EMPLOYEES 테이블에서 EMPLPYEE_ID, LAST_NAME, SALARY, HIRE_DATE 및 입사일 기준으로 근속년수를 계산해서 아래사항을 추가한 후에 출력하세요.
--2001년 1월 1일 창업하여 현재까지 20년간 운영되온 회사는 직원의 근속년수에 따라 30 등급으로 나누어 등급에 따라 1000원의 BONUS를 지급.
--내림차순 정렬.
--A.
select EMPLOYEE_ID, LAST_NAME, SALARY, HIRE_DATE, trunc((sysdate-hire_date)/365) 근속연수,
trunc(((sysdate-hire_date)/365)30/20) 등급, (width_bucket(trunc((sysdate-hire_date)/365),0,20,30)-1)wb,
(width_bucket(trunc((sysdate-hire_date)/365),0,20,30)-1)1000 bonus_wb
from employees order by bonus_wb desc;
--Q11. EMPLOYEES 테이블에서 commission_pct 의 Null값 갯수를 출력하세요.
--A.
select count(*)frim employees
where commission_pct is null;
select commission_pct from employees;
--Q12. EMPLOYEES 테이블에서 deparment_id 가 없는 직원을 추출하여 POSITION을 '신입'으로 출력하세요.
--A.
select last_name, department_id,nvl(to_char(department_id), '신입')position
from employees where department_id is null;
--Q13. 사번이 120번인 사람의 사번, 이름, 업무(job_id), 업무명(job_title)을 출력(join~on, where 로 조인하는 두 가지 방법 모두)
--A.
select from employees;
select from jobs;
select e.employee_id, e.last_name,j.job_id, j.job_title
from employees e join jobs j on e.job_id = j.job_id
where employee_id=120;
--Q14. employees 테이블에서 이름에 FIRST_NAME에 LAST_NAME을 붙여서 'NAME' 컬럼명으로 출력하세요.
--예) Steven King
--A.
select first_name||' '||last_name name from employees;
--Q15. HR 테이블들을 분석해서 전체 현황을 설명할 수 있는 요약 테이블을 작성하세요. (예 : 부서별 평균 SALARY 순위)
--A.
select d.department_name, round(avg(e.salary)) avg
from departments d, employees e
where d.department_id = e.department_id
group by department_name
order by avg desc;
--Q16. HR EMPLOYEES 테이블에서 escape 옵션을 사용하여 아래와 같이 출력되는 SQL문을 작성하세요.
--jobid 칼럼에서 을 와일드카드가 아닌 문자로 취급하여 '_A'를 포함하는 모든 행을 출력
--A.
select * from employees where job_id like '%_A%' escape '\';
--Q17. HR EMPLOYEES 테이블에서 SALARY, LAST_NAME 순으로 올림차순 정렬하여 출력하세요.
--A.
select salary, last_name from employees order by salary asc, last_name asc;
--Q18. Seo라는 사람의 부서명을 출력하세요.
--A.
select department_name from departments
where department_id = (select department_id from employees where last_name = 'Seo');
--Q19. LMEMBERS 데이터에서 고객별 구매금액의 합계를 구한 CUSPUR 테이블을 생성한 후 CUST 테이블과
--고객번호를 기준으로 결합하여 출력하세요.
create table cuspur
as select 고객번호, sum(구매금액) 구매금액
from prodpur
group by 고객번호
order by 고객번호;
select * from cuspur;
select * from prodpur;
--Q20.purprd 테이블의 2년간 구매금액을 연간 단위로 분리하여 구매14, 구매15 컬럼을 포함하는 AMT_YEAR 테이블을
--생성한 후 14년과 15년의 구매금액 차이를 표시하는 증감 컬럼을 추가하여 출력하세요.
--단, 고객번호, 제휴사별로 구매금액 및 증감이 구분되어야 함.
create table amt14
as select 고객번호,제휴사, sum(구매금액) 구매금액
from prodpur
where 구매일자 < '20150101'
group by 고객번호, 제휴사
order by 고객번호;
create table amt15
as select 고객번호,제휴사, sum(구매금액) 구매금액
from prodpur
where 구매일자 > '20141231'
group by 고객번호, 제휴사
order by 고객번호;
-- FULL OUTER JOIN 테이블 생성
create table amt_year_foj
as select a4.고객번호,a4.제휴사, a4.구매금액 구매14, a5.구매금액 구매15
from amt14 a4 full outer join amt15 a5
on (a4.고객번호 = a5.고객번호 and a4.제휴사=a5.제휴사);
select * from amt_year_foj;
-- 테이블 증감.
select 고객번호, 제휴사, nvl(구매14,0) 구매14, nvl(구매15,0) 구매15,
(nvl(구매15,0)-nvl(구매14,0))증감
from amt_year_foj a;