[오라클] 급여의 합
본문 바로가기
IT. 컴퓨터

[오라클] 급여의 합

by 솔기잇 2020. 8. 23.

 < 부서번호별 급여의 합을 구하세요. >

 

<문제> 아래와 같이 나타내세요

<>

10   2343

20   5346

30   8472

 

1) 

SELECT DEPTNO,SUM(SAL) -- 합을 보겠다.

FROM TBL_NEWSAWON

GROUP BY DEPTNO;  --DEPTNO

 

<결과>

DEPTNO   SUM(SAL)

 30           19800

                 1200

 20           14000

 10           16000

 

2)

SELECT DEPTNO,SUM(SAL)

FROM TBL_NEWSAWON

GROUP BY DEPTNO;

 

<결과>

DEPTNO   SUM(SAL)

  30           19800

                 1200

  20           14000

  10           16000

 

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

 

SELECT COUNT(*)

FROM TBL_NEWSAWON;

 

--WHERE 절은 쓰지 않는다. 남자 아니면 여자이니까

-- 컬럼은 널이 없기에 * 표현한다.

 

<문제>

TBL_NEWSAWON 테이블에서 ,녀별 인원수를 구하세요.

테이블 안에 성별컬럼이 없으니까 만들면 된다.

 

 1)

SELECT T.GENDER AS "성별", COUNT(*) AS "인원수"

FROM

(

SELECT CASE

       WHEN SUBSTR(JUBUN,7,1) IN ('1','3') THEN ''

       ELSE '' END AS "GENDER"

FROM TBL_NEWSAWON

) T

GROUP BY T.GENDER;

 

<결과>

성별       인원수

            10

             9

  

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

 

<문제> 

TBL_NEWSAWON 테이블에서 연령대별 인원수를 구하세요.

연령대 컬럼을 만들면 된다.

 

 1)

SELECT T."연령대", COUNT(*) AS "인원수"

FROM

(

SELECT TRUNC(

            EXTRACT(YEAR FROM SYSDATE) -

            CASE WHEN SUBSTR(JUBUN, 7, 1) IN ('1','2')

            THEN TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 1900

            ELSE TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 2000

            END + 1, -1) AS "연령대"

FROM TBL_NEWSAWON

) T

GROUP BY T."연령대"

ORDER BY 1;    

 

<결과>

연령대    인원수

   0       3

  10      5

  20      4

  30      5

  40      1

  50      1

 

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

 

<문제> 아래와 같이 나타내세요

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

연령대     성별      인원수

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

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

  20                 3

  20                 1

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

 

1)

SELECT T."연령대", T."성별", COUNT(*) AS "인원수"

FROM

(

SELECT TRUNC(

            EXTRACT(YEAR FROM SYSDATE) -

            CASE WHEN SUBSTR(JUBUN, 7, 1) IN ('1','2')

            THEN TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 1900

            ELSE TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 2000

            END + 1, -1) AS "연령대",

 

       CASE

       WHEN SUBSTR(JUBUN,7,1) IN ('1','3') THEN ''

       ELSE '' END AS "성별"

FROM TBL_NEWSAWON      

) T      

GROUP BY T."연령대", T."성별"

ORDER BY 1;

 

<>

연령대    성별       인원수

    0                 3

   10                4

   10                1

   20                1

   20                3

   30                4

   30                1

   40                1

   50                1

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


close