[DB] SQL문제2

1. 오늘부터 12월 25일까지 몇일이 남았는가?

select to_date('2017/12/25') - sysdate from dual;


2. 현재까지 근무한 직원들의 근무일수를 몇주 몇일로 조회(단, 근무일수가 많은 사람 순으로 조회)

select ename, hiredate, trunc((sysdate-hiredate)/7)"몇주", trunc(mod((sysdate-hiredate),7)) "몇일"from emp order by sysdate - hiredate desc;


3. 10번 부서 직원들 중 현재까지의 근무월수를 계산해서 조회

select deptno, ename, hiredate, sysdate, trunc(months_between(sysdate, hiredate))"근무개월수" from emp where deptno=10;


4. 20번 부서 직원들 중 입사일자로부터 13개월이 지난 후의 날짜를 조회

select deptno, ename, hiredate, add_months(hiredate,13)"입사일자부터 13개월 지난 후" from emp where deptno=20;


5. 모든 직원에 대해 입사한 달의 근무일수를 조회

select empno, ename, hiredate, last_day(hiredate) - hiredate "근무일수" from emp;


6. 현재 급여에 15%가 증가된 급여를 계산하여 사번, 이름, 급여, 증가된 급여를 조회

(단, 급여는 반올림하여 적용한다.)

select empno, ename, sal, round(sal*1.15)"증가된급여" from emp;


7. 이름, 입사일, 입사일로부터 현재까지의 월수, 급여, 급여 총계를 조회

select ename, hiredate, trunc(months_between(sysdate,hiredate))"입사후 현재까지 개월수", sal, sal*trunc(months_between(sysdate,hiredate))"급여 총계" from emp;


8. 업무가 analyst이면 급여를 10% 증가시키고 clerk이면 15%, manager이면 20%증가 시켜서 이름, 업무, 급여, 증가된 급여를 조회

select ename, job, sal, decode(job, 'ANALYST', sal*1.1, 'CLERK', sal*1.15, 'MANAGER', sal*1.2)"증가된 급여" from emp;


9. 이름의 첫글자가 k보다 크고 y보다 작은 직원의 이름, 부서, 업무를 조회하시오.

select ename, deptno, job from emp where ename>'K%' and ename<'Y%';


select ename, deptno, job from emp where substr(ename,1,1)>'K' and substr(ename,1,1)<'Y';


10. 부서별로 급여평균, 최고급여를 조회하는데, 단 급여평균이 높은 순으로 조회하고 급여평균이 2000이상인 부서만 조회

select avg(sal), max(sal) from emp group by deptno having avg(sal)>2000 order by avg(sal) desc;


11. 인원수, 보너스에 null이 아닌 인원수, 보너스의 평균(보너스가 null이아닌 평균, null을 포함한 평균), 

등록되어 있는 부서의 수(중복 제외)를 구하여 조회

EX)

  인원수    보너스받는 인원(null제외)  보너스 평균(null 포함)   보너스 평균(null 제외)    부서의 수

 --------- ------------------------------  ----------------------  ------------------------         ---------

     14                     4                          550                  157.142857                        3


select count(distinct(deptno))부서수, count(*)인원수, count(comm)보너스받는인원, avg(comm)보너스평균, avg(nvl(comm,0))보너스안받는사람평균 from emp;


12. 부서 인원이 4명보다 많은 부서의 부서번호, 인원 수, 급여의 합을 조회

select deptno, count(empno), sum(sal) from emp having count(deptno)>4 group by deptno ;


13. 최고급여와 최소급여의 차이는 얼마인가?

select max(sal), min(sal), max(sal)-min(sal)"차이" from emp;



14. 예시)

      년도   count     min        max          avg          sum

      -------------------------------------------------------------------------

      80      1          800        800           800          800

      81      10        950        5000          2282.5     22825

      82      2         1300       3000          2150        4300

      83      1         1100       1100          1100        1100

       

select to_char(hiredate,'YY')년도, 

count(empno)count, 

min(sal)min, 

max(sal)max, 

avg(sal)avg, 

sum(sal)sum from emp 

group by to_char(hiredate,'YY') order by to_char(hiredate,'YY');


15. 예시)

      Total     1980     1981     1982     1983

      ---------------------------------------------

      14           1        10         2          1


select count(empno) "Total", 

count(decode(to_char(hiredate,'YYYY'), 1980,empno))"1980",

count(decode(to_char(hiredate,'YYYY'), 1981,empno))"1981",

count(decode(to_char(hiredate,'YYYY'), 1982,empno))"1982",

count(decode(to_char(hiredate,'YYYY'), 1987,empno))"1987"

from emp;


16. 예시)

      업무                 10          20      30      Total

      -------------------------------------------------------------------------------

      ANALYST                      6000                  6000

      CLERK             1300      1900         950        4150

      MANAGER        2450      2975        2850        8275

      PRESIDENT        5000                    5000

      SALESMAN                           5600        5600


select job"업무", 

sum(decode(deptno,10,sal))"10",

sum(decode(deptno,20,sal))"20",

sum(decode(deptno,30,sal))"30",

sum(sal)Total from emp group by job order by job;

'DB' 카테고리의 다른 글

[DB] Sub Query  (0) 2017.11.15
[DB] DML  (0) 2017.11.15
[DB] SQL 문제  (0) 2017.11.13
[DB] Function  (0) 2017.11.13
[DB] SQL - 확장 문법  (0) 2017.11.13

댓글

Designed by JB FACTORY