STUDY/ORACLE

Oracle 4일차(2)-문제

Anne of Green Galbes 2019. 1. 16. 18:31

◈4일차 문제


▲EMP 테이블



1. EMP 테이블에서 인원수,최대 급여,최소 급여,급여의 합을 계산하여 출력하는 SELECT 문장을 작성하여라.

SELECT COUNT(*) 인원수,

MAX(SAL) "최대 급여", MIN(SAL) "최소 급여",

TO_CHAR(SUM(SAL),'999,999') "급여합"

FROM EMP;


2. EMP 테이블에서 각 업무별로 최대 급여,최소 급여,급여의 합을 출력하는 SELECT 문장을 작성하여라.

SELECT JOB 업무,

TO_CHAR(MAX(SAL),'999,999') "최대 급여",
TO_CHAR(MIN(SAL),'999,999') "최소 급여",

TO_CHAR(SUM(SAL),'999,999') "급여합"

FROM EMP

GROUP BY JOB;



3. EMP 테이블에서 업무별 인원수를 구하여 출력하는 SELECT 문장을 작성하여라.

SELECT JOB 업무, COUNT(*) 인원수

FROM EMP

GROUP BY JOB;


4. EMP 테이블에서 최고 급여와 최소 급여의 차이는 얼마인가 출력하는 SELECT 문장을 작성하여라.

SELECT ROUND(MAX(SAL)) - ROUND(MIN(SAL)) 차이 FROM EMP;



5. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(group by)

H_YEAR  COUNT(*)  MIN(SAL) MAX(SAL)  AVG(SAL) SUM(SAL)

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

         87        2 1100          3000 2050    4100

         81      10 950            5000 2282.5 22825

         82        1 1300          1300 1300    1300

         80        1 800             800 800   800

SELECT TO_CHAR(HIREDATE,'YY') H_YEAR, COUNT(*) 인원수,

TO_CHAR(MIN(SAL),'9,999') "최소 급여", TO_CHAR(MAX(SAL),'9,999') "최대 급여", TO_CHAR(ROUND(AVG(SAL)),'9,999.9') “급여평균”, TO_CHAR(SUM(SAL),'9,999') "급여합"

FROM EMP

GROUP BY HIREDATE;



6. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(case,sum)

TOTAL   1980 1981   1982 1983

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

      12    1 10         1 0

SELECT

SUM(COUNT(HIREDATE)) TOTAL,

NVL(SUM(CASE TO_CHAR(HIREDATE, 'YYYY') WHEN '1980' THEN COUNT(*) END),0) "1980",

NVL(SUM(CASE TO_CHAR(HIREDATE, 'YYYY') WHEN '1981' THEN COUNT(*) END),0) "1981",

NVL(SUM(CASE TO_CHAR(HIREDATE, 'YYYY') WHEN '1982' THEN COUNT(*) END),0) "1982",

NVL(SUM(CASE TO_CHAR(HIREDATE, 'YYYY') WHEN '1983' THEN COUNT(*) END),0) "1983"

FROM EMP

GROUP BY HIREDATE;




7. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.

JOB                Deptno 10 Deptno 20     Deptno 30 Total

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

CLERK                    1300 1900             950 4150

SALESMAN                                                        5600 5600

PRESIDENT      5000                                                     5000

MANAGER      2450             2975 2850           8275

ANALYST                             6000       6000

SELECT JOB,

SUM(NVL(DECODE(DEPTNO,10,SAL,NULL),NULL)) "Deptno 10",

SUM(NVL(DECODE(DEPTNO,20,SAL,NULL),NULL)) "Deptno 20",

SUM(NVL(DECODE(DEPTNO,30,SAL,NULL),NULL)) "Deptno 30",

SUM(SAL) "Total"

FROM EMP

GROUP BY JOB;


SELECT JOB,

SUM(CASE DEPTNO WHEN 10 THEN SAL END) "Deptno 10",

SUM(CASE DEPTNO WHEN 20 THEN SAL END) "Deptno 20",

SUM(CASE DEPTNO WHEN 30 THEN SAL END) "Deptno 30",

SUM(SAL) "Total"

FROM EMP

GROUP BY JOB;