728x90
반응형

Temp를 이용한 문제를 풀어보자

Temp에 있는 직원들을 부서별 직급별로 SALARY 을 보려한다 이때 부서별로 직급들이 동일행에 나오도록

보여주고 부서별 전체급여 그리고 PER컬럼의 전체 부서 급여합계 비율을 구하여라

 

SELECT CASE WHEN DEPTNO IS NOT NULL THEN DEPTNO ELSE '합계' END DEPTNO

, SUM(A.부장) 부장, SUM(A.차장) 차장, SUM(A.과장) 과장

, SUM(A.대리) 대리, SUM(A.사원) 사원, SUM(A.수습) 수습, SUM(A.PER) 전체급여비율

, SUM(A.SAL) 부서별급여합계

FROM (SELECT DEPT_CODE DEPTNO, SALARY SAL

                               , SUM(CASE WHEN LEV = '부장' THEN SALARY ELSE 0 END) 부장

                               , SUM(CASE WHEN LEV = '차장' THEN SALARY ELSE 0 END) 차장

                               , SUM(CASE WHEN LEV = '과장' THEN SALARY ELSE 0 END) 과장

                               , SUM(CASE WHEN LEV = '대리' THEN SALARY ELSE 0 END) 대리

                               , SUM(CASE WHEN LEV = '사원' THEN SALARY ELSE 0 END) 사원

                               , SUM(CASE WHEN LEV = '수습' THEN SALARY ELSE 0 END) 수습

                               , ROUND(RATIO_TO_REPORT(SALARY) OVER (),2) * 100 AS PER

                               , SUM(SALARY)

             FROM TEMP

             GROUP BY DEPT_CODE, SALARY, LEV

              ) A

GROUP BY ROLLUP(DEPTNO)

ORDER BY DEPTNO

 

-->  컬럼 합계를 하기위해서는 ROLLUP()필요하다

그리고 select 문에 DEPTNO별로 소계를 한다면 DEPTNO가 NULL이 되어서 CASE문에 합계라는 문자를 줄 수 있다  

밑의 2개의 구문으로 컬럼의 합계를 표현할 수 있다

 

SELECT CASE WHEN DEPTNO IS NOT NULL THEN DEPTNO ELSE '합계' END DEPTNO

GROUP BY ROLLUP(DEPTNO)

 

 

TEST02 테이블의 자료를 이용해 최대 CRATE를 가지는 일자의 AMT와 최소 CREATE를 가지는 일자의 AMT를 읽어오는 문장을 출력하시오

 

SELECT distinct LAST_VALUE(AMT) OVER ( ORDER BY CRATE

                                                                                        ROWS BETWEEN UNBOUNDED PRECEDING

                                                                                        AND UNBOUNDED FOLLOWING) MAX_VAL,

FIRST_VALUE(AMT) OVER( ORDER BY CRATE

                                                      ROWS BETWEEN UNBOUNDED PRECEDING

                                                      AND UNBOUNDED FOLLOWING) MIN_VAL

FROM TEST02

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel