ROLLUP 질문있습니다. 0 1 1,424

by DISTINCT [SQL Query] [2016.10.18 17:49:52]


ROLLUP으로 통계를 봅는데...예를들어

NO NAME WIFE SAL
1 ROBERT   100
2 TIM MARY 80

이렇게 내용이 있다면

SAL은 SUM 을 하고 WIFE는 COUNT를 하고 싶어요.

문제는 WIFE 항목을 카운트 할때 ROLLUP을 쓰게 되면

값이 없으면 0 값이 있으면 1로만 되잖아요

저는 그게 아니라 WIFE 이름(MARY)을 표시하고 마지막에 TOTAL에 카운트된 값 1 이 나오게 하고 싶은데 그렇게 할려면 어떻게 해야 하죠? ㅠㅠ

by atumlee [2016.10.18 18:30:01]

원하시는 결과가 아래와 같다면 grouping(name) 을 사용하시면

되지 않을까요?

/*
------------------------------
NAME        WIFE        SAL
------------------------------
ROBERT     (null)     100
TIM         MARY      80
[Total]     1         180
------------------------------
*/
WITH
    W_DATA(NO, NAME, WIFE, SAL) AS
        (
        SELECT 1, 'ROBERT', NULL, 100 FROM DUAL
        UNION ALL SELECT 2, 'TIM', 'MARY', 80 FROM DUAL
        )
SELECT  DECODE(GROUPING(NAME),0,NAME,'[Total]') AS NAME
      , DECODE(GROUPING(NAME),0,MAX(WIFE),COUNT(WIFE)) AS WIFE
      , SUM(SAL) AS SAL
FROM    W_DATA
GROUP BY ROLLUP(NAME)
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입