1.모든사원의 사원번호, 이름, 급여, 부서 번호를 출력하여라.

SELECT ename, sal, deptno 

FROM emp;

 

2.모든 사원의 이름, 급여, 커미션, 총액(급여+커미션)을 구하여 총액이 많은 순서로 출력하여라(,커미션이 null인 사원도 0으로해서 포함하여라.).

SELECT ename, sal, NVL(comm,0) AS "comm", sal+NVL(comm,0) AS "총액

FROM emp 

ORDER BY sal+NVL(comm,0) DESC;

 

3.10번부서의 모든 사원에게 급여의 13%를 보너스로 지불하기로 하였다. 10번부서 사원들의 이름,급여,보너스 금액,부서번호를 출력하여라.

SELECT ename, sal, sal*1.13, deptno 

FROM emp 

WHERE deptno =10;

 

4.급여가 $1,500부터$3,000 사이의 사원에 대해서만 급여의 15%를 회비로 지불하기로 하였다. 조건에 해당되는 사원의 이름,급여,회비(소수이하 2자리까지 반올림)를 출력하여라.

SELECT ename, sal, ROUND(sal*0.15,2) AS "회비

FROM emp 

WHERE sal >1500 

AND sal <3000;

 

5.모든 사원의 부서번호, 이름, 입사일, 현재일, 입사일부터 현재까지의 근무 일 수(소수점 이하 절삭),근무 년 수, 근무 월 수(30일 기준), 근무 주수를 출력하여라.

SELECT deptno, ename, hiredate, sysdate, TRUNC(sysdate-hiredate), 모르겟음 

 

6.모든 사원에 대해 입사일로부터 90일이 지난 후의 날짜를 계산해서 이름, 입사일, 90일 후의 날짜,급여를 출력하여라.

SELECT ename, hiredate, hiredate+90 AS "입사일+90",sal 

FROM emp;

 

7.모든 사원에 대해 입사한 달의 근 무 일수를 계산하여 부서 번호, 이름, 근무 일 수를 출력하여라.

SELECT deptno,ename, LAST_DAY(hiredate)-hiredate AS "입사한달 근무일수

FROM emp;

 

8.모든 사원에 대해 입사한 날로부터 60일이 지난 후의 '월요일'이 몇 년,몇 월,몇 일인지를 구하여 이름, 입사일, 60일 후의 '월요일' 날짜를 출력하여라.

SELECT TO_CHAR(NEXT_DAY(hiredate+60,''),'yyyy-mm-dd') 

FROM emp;

 

9.이름의 글자수가 6자 이상인 사원의 이름을 앞에서 3자만 구하여 소문자로 이름만 출력하여라.

SELECT lower(SUBSTR(ename,1,3)) 

FROM emp 

WHERE LENGTH(ename) >= 6;

 

10.모든 사원에 대해 사원의 이름은 앞에서 세 글자만 대문자로, 업무는 소문자로 하여 이름, 직무, 부서 번호를 출력하여라.

SELECT UPPER(SUBSTR(ename,1,3))||lower(SUBSTR(ename,4)) AS "ename", job, deptno 

FROM emp;

 

11.모든 사원에 대해 사원의 이름과 부서 번호를 합성시켜 "연결예제"라는 HEADING으로 출력하여라.

SELECT ename||'의 부서번호는 '||deptno||' 이다.' AS "연결예제

FROM emp;

 

12.사원의 직무가 'SAL'로 시작하는 사원의 이름과 사원 이름의 길이를 출력하여라.

SELECT ename,LENGTH(ename) FROM emp 

WHERE job LIKE 'SAL%';

 

13.이름의 두 번째 글자가 'A'인 사원들의 이름과 직무를 출력하여라(, 직무는 앞에서부터 세 글자로 줄여 표시하여라.).

SELECT ename, SUBSTR(job,1,3) 

FROM emp 

WHERE ename LIKE '_A%'; 

 

14.현재의 7일전과 7일후, 그리고 30일이 지난 후의 첫 번째 월요일을 출력하여라.

SELECT NEXT_DAY(sysdate-7,'') AS "7일전",NEXT_DAY(sysdate+7,'') AS "7일후",NEXT_DAY(sysdate+30,'') AS "30일후

FROM emp;

 

15.직무가 'CLERK'인 사원들의 사원 번호, 이름, 급여를 표시하여라(, 급여는 1000단위마다 콤마(,)를 찍고 앞에는 국가별 화폐단위를 붙여 표시하여라.).

SELECT empno, ename, TO_CHAR(sal,'L999,999') 

FROM emp 

WHERE job=UPPER('clerk');

 

16.사원들의 사원 번호와 급여, 커미션,연봉((comm+sal)*12)을 연봉이 많은 순서로 출력하여라(,커미션이 null인 사원도 0 으로 계산하여라.).

SELECT empno, sal, NVL(comm,0) AS "comm", ((NVL(comm,0)+sal)*12) AS "annual income" 

FROM emp 

ORDER BY ((NVL(comm,0)+sal)*12) 

 

17.모든 사원에 대해 입사일로부터 6개월이 지난 후의 날짜를 계산해서 이름, 입사일, 6개월 후의 날짜를 출력하여라.

SELECT ename,hiredate, ADD_MONTHS(hiredate,6) AS "addmonths"

FROM emp; 

 

18.모든 사원에 대해 사원들의 이름, 급여, 커미션을 급여가 적은 것부터 출력하여라(, 커미션이 없는 사원은 'No Commission'이라는 말이 출력되게하여라.).

SELECT ename,sal, DECODE(comm,'','No Commission',comm) 

FROM emp 

ORDER BY sal ASC;

 

19.'CLERK'20%, 'SALESMAN'15%,'ANALYST'10%, 'MANAGER'5%, 'PRESIDENT' 0% 같이 업무에 따라 급여인상을 다르게 할 경우, 모든 사원들의 이름, 직무, 급여, 인상 후의 급여를 출력하여라.

SELECT ename, job, sal, DECODE(job, 'CLERK', sal*1.20, 'SALESMAN', sal*1.15, 'ANALYST', sal*1.05, 'PRESIDENT', sal*1.0, sal) 

FROM emp;

 

20. 모든 사원들의 입사한 년도와 입사한 달을 출력하여라.

SELECT TO_CHAR(hiredate,'yyyy')||'년도',TO_CHAR(hiredate,'mm')||'

FROM emp;

 

21.사원번호가 짝수인 사원들의 모든 정보를 출력하여라.  

SELECT * 

FROM emp 

WHERE MOD(empno,2) = 0;

+ Recent posts