-- hr 스키마

-- 문제1) EMPLOYEES 테이블에서 급여가 3000이상인 사원의 사원번호, 이름, 담당업무, 급여를 출력하라.

SELECT employee_id, first_name, job_id, salary FROM employees 
WHERE salary >= 3000; 


-- 문제2) EMPLOYEES 테이블에서 담당 업무가 ST_MAN인 사원의 사원번호, 성명, 담당업무, 급여, 부서번호를 출력하라.

SELECT employee_id, first_name, job_id, salary, department_id FROM employees 
WHERE job_id = 'ST_MAN';


-- 문제3) EMPLOYEES 테이블에서 입사일자가 2006년 1월 1일 이후에 입사한 사원의 
-- 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하라.

SELECT employee_id, first_name, job_id, salary, hire_date, department_id FROM employees 
WHERE hire_date > '06/01/01';

SELECT employee_id, first_name, job_id, salary, hire_date, department_id FROM employees 
WHERE hire_date > TO_DATE('060101','YYMMDD');


-- 문제4) EMPLOYEES 테이블에서 급여가 3000에서 5000사이의 사원의 성명, 담당업무, 급여, 부서번호를 출력하라.

SELECT first_name, job_id, salary, department_id FROM employees 
WHERE salary >= 3000 AND salary <= 5000;

SELECT first_name, job_id, salary, department_id FROM employees 
WHERE salary BETWEEN 3000 AND 5000;


-- 문제5) EMPLOYEES 테이블에서 사원번호가 145,152,203인 사원의 사원번호, 성명, 담당업무, 급여, 입사일자를 출력하라

SELECT employee_id, first_name, job_id, salary, hire_date FROM employees 
WHERE employee_id IN (145 , 152 , 203);


-- 문제6) EMPLOYEES 테이블에서 입사일자가 05년도에 입사한 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하라.

SELECT employee_id, first_name, job_id, salary, hire_date, department_id FROM employees 
WHERE hire_date LIKE ('05%');


-- 문제7) EMPLOYEES 테이블에서 보너스가 없는 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 보너스, 부서번호를 출력하라.

SELECT employee_id, first_name, job_id, salary, hire_date, commission_pct, department_id FROM employees 
WHERE NVL(commission_pct,0)  =  0 ;

SELECT employee_id, first_name, job_id, salary, hire_date, commission_pct, department_id FROM employees 
WHERE commission_pct IS NULL ;


-- 문제8) EMPLOYEES 테이블에서 급여가 1100이상이고 JOB이 ST_MAN인 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하라

SELECT employee_id, first_name, job_id, salary, hire_date, department_id FROM employees 
WHERE salary >= 1100 AND job_id = 'ST_MAN';


-- 문제9) EMPLOYEES 테이블에서 급여가 10000이상이거나 JOB이 ST_MAN인 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하라

SELECT employee_id, first_name, job_id, salary, hire_date, department_id FROM employees 
WHERE salary >= 10000 OR job_id = 'ST_MAN';


-- 문제10) EMPLOYEES 테이블에서 JOB이 ST_MAN, SA_MAN, SA_REP가 아닌 사원의 사원번호, 성명, 담당업무, 급여, 부서번호를 출력하라

SELECT employee_id, first_name, job_id, salary, department_id FROM employees 
WHERE job_id NOT IN ('ST_MAN', 'SA_MAN', 'SA_REP'); 


-- 문제11) 업무가 AD_PRES이고 급여가 12000이상이거나 업무가 SA_MAN인 사원의 사원번호, 이름, 업무, 급여를 출력하라.

SELECT employee_id, first_name, job_id, salary FROM employees 
WHERE job_id = 'AD_PRES' AND salary >= 12000 OR job_id = 'SA_MAN';


-- 문제12) 업무가 AD_PRES 또는 SA_MAN이고 급여가 12000이상인 사원의 사원번호, 이름, 업무, 급여를 출력하라.

SELECT employee_id, first_name, job_id, salary FROM employees 
WHERE job_id IN ('AD_PRES' , 'SA_MAN') AND salary >= 12000;
-- 문제1) EMPLOYEES Table의 모든 자료를 출력하여라.

SELECT * FROM employees;


-- 문제2) EMPLOYEES Table의 컬럼들을 모두 출력하라.

DESC employees;


-- 문제3) EMPLOYEES Table에서 사원 번호, 이름, 급여, 담당업무를 출력하여라.

SELECT employee_id, first_name, salary, job_id FROM employees; 


-- 문제4) 모든 종업원의 급여를 $300증가 시키기 위해서 덧셈 연산자를 사용하고 결과에 SALARY+300을 디스플레이 합니다.

SELECT first_name, salary, salary+300 AS "SALARY+300" FROM employees;


-- 문제5) EMP 테이블에서 사원번호, 이름, 급여, 보너스, 보너스 금액을 출력하여라. 
-- (참고로 보너스는 월급 + (월급*커미션))

SELECT employee_id, first_name || last_name AS Name, salary, commission_pct, salary + (salary*commission_pct) as bouns FROM employees;


-- commission_pct을 Java로 가져올시 NullPointException 발생 !!  null -> 0 으로 바꿔서 가져와야함
-- NVL 함수 : NVL(대상컬럼, 대상컬럼이 NULL인 경우에 출력할 값) ★★★★★

SELECT employee_id, first_name, salary, NVL(commission_pct,0), salary+NVL(salary*commission_pct,0) FROM employees;


-- 문제6) EMPLOYEES 테이블에서 LAST_NAME을 이름으로 SALARY을 급여로 출력하여라.

SELECT last_name 이름, salary 급여 FROM employees;


-- 문제7) EMPLOYEES 테이블에서 LAST_NAME을 Name으로 SALARY * 12를 Annual Salary(연봉)로 출력하여라

SELECT last_name "Name", salary*12 "Annual Salary(연봉)" FROM employees;


-- 문제8) EMPLOYEES 테이블에서 이름과 업무를 연결하여 출력하여라. 

SELECT first_name || ' ' || last_name || ' : ' || job_id AS "이름 : 업무" FROM employees;


-- 문제9) EMPLOYEES 테이블에서 이름과 업무를 “KING is a PRESIDENT” 형식으로 출력하여라. 

SELECT last_name || ' is a ' || job_id FROM employees;


-- 문제10) EMPLOYEES 테이블에서 이름과 연봉을 “KING: 1 Year salary = 60000” 형식으로 출력하여라. 

SELECT last_name||': 1 Year salary = '|| salary*12 FROM employees;


-- 문제11) EMPLOYEES 테이블에서 JOB을 모두 출력하라.

SELECT DISTINCT job_id FROM employees; 

+ Recent posts