본문 바로가기

Database/Oracle Work

work 01



-- 문제1) EMPLOYEES 테이블에서 급여가 3000이상인  
-- 사원의 정보를 사원번호, 이름, 담당업무, 급여를 출력하라. 
SELECT employee_id, first_name, job_id, salary 
FROM employees 
WHERE salary >= 3000; 

-- 문제2) EMPLOYEES 테이블에서 담당 (업무가 Manager)인  
-- 사원의 정보를 사원번호, 성명, 담당업무, 급여, 부서번호를 출력하라. (Manager == ST_MAN)  
SELECT employee_id, first_name, job_id, salary, department_id 
FROM employees 
WHERE job_id = 'ST_MAN' AND salary >= 7000; 

SELECT employee_id, first_name, job_id, salary, department_id 
FROM (  SELECT employee_id, first_name, job_id, salary, department_id 
        FROM employees  
        WHERE job_id = 'ST_MAN') 
WHERE salary >= 7000; 

-- 문제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('20060101', 'YYYYMMDD'); 

-- 문제4) EMPLOYEES 테이블에서 급여가 3000에서 5000사이의 정보를  
-- 성명, 담당업무, 급여, 부서번호를 출력하라. 
SELECT first_name, job_id, salary, department_id 
FROM employees 
-- WHERE salary >= 3000 AND salary <= 5000; 
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 >= '05/01/01' AND hire_date <= '05/12/31'; 
WHERE hire_date LIKE '05%'; 

-- 문제7) EMPLOYEES 테이블에서 보너스가 NULL인  
-- 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 보너스, 부서번호를 출력하라. 
SELECT employee_id, first_name, job_id, salary, hire_date, NVL(commission_pct, 0.0), department_id 
FROM employees 
WHERE commission_pct IS NULL; 

-- 문제8) EMPLOYEES 테이블에서 급여가 7000이상이고 JOB이 Manager인  
-- 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하라 
SELECT employee_id, first_name, job_id, salary, hire_date, department_id 
FROM employees 
WHERE job_id = 'ST_MAN' AND salary >= 7000; 


-- 문제9) EMPLOYEES 테이블에서 급여가 10000이상이거나 JOB이 Manager인  
-- 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하 라 
SELECT employee_id, first_name, job_id, salary, hire_date, department_id  
FROM employees 
WHERE job_id = 'ST_MAN' OR salary >= 10000; 

-- 문제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'); 
WHERE job_id IN('SA_MAN'); 

-- 문제11) 업무가 PRESIDENT이고 급여가 12000이상이거나 업무가 SALESMAN인  
-- 사원의 정보를 사원번호, 이름, 업무, 급여를 출력하라. 
SELECT employee_id, first_name, job_id, salary 
FROM employees 
WHERE job_id = 'AD_PRES' 
    AND salary >= 12000 
    OR job_id = 'SA_MAN'; 

-- 문제12) 업무가 PRESIDENT또는 SALESMAN이고 급여가 12000이상인  
-- 사원의 정보를 사원번호, 이름, 업무, 급여를 출력하라.  
SELECT employee_id, first_name, job_id, salary 
FROM employees 
WHERE job_id = 'AD_PRES'  
        OR job_id = 'SA_MAN' 
            AND salary >= 12000; 
             
-- scott 
--6) emp 테이블에서 사원번호가 7698 인 사원의 이름, 업무, 급여를 출력하시오. 
SELECT ename, job, sal 
FROM emp 
WHERE empno = 7698; 

-- 7) emp 테이블에서 사원이름이 SMITH인 사람의 이름과 월급, 부서번호를 구하시오. 
SELECT ename, sal, deptno 
FROM emp 
WHERE ename = 'SMITH'; 

-- 8) 월급이 2500이상 3500미만인 사원의 이름, 입사일, 월급을 구하시오. 
SELECT ename, hiredate, sal 
FROM emp 
WHERE sal >= 2500 AND sal < 3500; 

-- 9) 급여가 2000에서 3000사이에 포함되지 않는 사원의 이름, 업무, 급여를 출력하시오. 
SELECT ename, job, sal 
FROM emp 
WHERE sal NOT BETWEEN 2000 AND 3000; 

-- 10) 81년 05월 01일과 81년 12월 03일 사이에 입사한 사원의 이름, 급여, 입사일을 출력하시오. 
SELECT  ename, sal, hiredate 
FROM emp 
WHERE hiredate BETWEEN '81/05/01' AND '81/12/03'; 

-- 11) emp테이블에서 사원번호가 7566,7782,7934인 사원을 제외한 사람들의 사원번호,이름, 
--    월급을 출력하시오. 
SELECT empno, ename, sal 
FROM emp 
WHERE empno NOT IN(7566, 7782, 7934); 

-- 12) 부서번호 30(deptno)에서 근무하며  
-- 월 2,000달러 이하를 받는  
-- 81년05월01일 이전에 입사한  
-- 사원의 이름, 급여, 부서번호, 입사일을 출력하시오. 

SELECT ename, sal, deptno, hiredate 
FROM emp 
WHERE deptno = 30 
    AND sal <= 2000 
       AND hiredate < '81/05/01';  

-- 13) emp테이블에서 급여가 2,000와 5,000 사이고  
-- 부서번호가 10 또는 30인 사원의 이름과 급여,부서번호를 나열하시오. 
SELECT ename, sal, deptno 
FROM emp 
WHERE (sal BETWEEN 2000 AND 5000) 
    AND (deptno = 10 OR deptno = 30); 

SELECT ename, sal, deptno 
FROM (  SELECT ename, sal, deptno   
        FROM emp 
        WHERE sal BETWEEN 2000 AND 5000 ) 
WHERE deptno = 10 OR deptno = 30; 

-- 14) 업무가 SALESMAN 또는 MANAGER이면서 급여가 1,600, 2,975 또는 2,850이 아닌  
-- 모든 사원의 이름, 업무 및 급여를 표시하시오. 
SELECT ename, job, sal 
FROM emp 
WHERE (job = 'SALESMAN' OR job = 'MANAGER') 
    AND sal NOT IN(1600, 2975, 2850); 

-- 15) emp테이블에서 사원이름 중 S가 포함되지 않은 사람들 중  
-- 부서번호가 20인 사원들의 이름과 부서번호를 출력하시오. 
SELECT ename, deptno 
FROM emp 
--WHERE deptno = 20; 
WHERE ename NOT LIKE '%S%' 
   AND deptno = 20; 

-- 16) emp테이블에서 이름에 A와 E가 있는 모든 사원의 이름을 표시하시오. 
SELECT ename 
FROM emp 
WHERE ename LIKE '%A%' 
    AND ename LIKE '%E%'; 

-- 17) emp테이블에서 관리자가 없는 모든 사원의 이름과 업무를 표시하시오. 
SELECT ename, job 
FROM emp 
WHERE mgr IS NULL; 

-- 18) emp테이블에서 커미션 항목이 입력된 사원들의 이름과 급여, 커미션을 구하시오. 
SELECT ename, sal, comm 
FROM emp 
WHERE comm IS NOT NULL 
    AND comm <> 0; 

'Database > Oracle Work' 카테고리의 다른 글

입력받아 EMP테이블에 자료를 등록, 시퀀스, 조건문  (0) 2020.06.29
work 05  (0) 2020.06.26
work 04  (0) 2020.06.26
work 03  (0) 2020.06.24
work 02  (0) 2020.06.24