합계문의 0 3 881

by 패대기 [SQL Query] [2019.12.23 13:26:20]


SELECT SUM(COL3) COL3_QTY
    --, SUM(SUM(DISTINCT COL2) OVER(PARTITION BY COL1) ) COL2_QTY
FROM (
     SELECT 'A' COL1, 11 COL2, 31 COL3 FROM DUAL UNION ALL
     SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
     SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
     SELECT 'B' COL1, 22 COL2, 33 COL3 FROM DUAL
     ) A
;
위 쿼리에서 한번만에 COL3의 합계와 col1으로 중복제거한 col2 수량합계를 나오게 할수 있나요?
주석처리한 부분은 사용이 안되네요...
감싸서 하면 되긴하는데 간단히 안될까요?

-----추가설명-----

COL1, COL2는 부모의 컬럼이므로 한번만 계산되어야 함. COL3은 자식의 컬럼이므로 각 합산.

즉, COL2_QTY의 수는 11+22= 33이 되어야 합니다.

제가 한 방법은 

WITH TAB AS(
SELECT 'A' COL1, 11 COL2, 31 COL3 FROM DUAL UNION ALL
SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
SELECT 'A' COL1, 11 COL2, 32 COL3 FROM DUAL UNION ALL
SELECT 'B' COL1, 22 COL2, 33 COL3 FROM DUAL
)
select sum(new_col2) new_col2, sum(COL3) COL3
from (
      SELECT a.*
           , CASE WHEN COL1 <>  NVL(LAG(COL1) OVER(ORDER BY COL1),' ') THEN COL2
                ELSE 0
            END new_col2
      FROM TAB A
      )

인데 

감싸지 않고 바로 하는 방법이 있을것도 같아서 올렸습니다.

질문을 너무 대충 올려서 죄송합니다. ;;;;;

by 마농 [2019.12.23 14:27:01]

설명만으로는 모호합니다.
원하시는 결과표 값과 그 값이 나오게 되는 과정을 수치를 가지고 설명해 주세요.


by jkson [2019.12.24 15:40:26]

SELECT SUM(DISTINCT COL2), SUM(COL3) FROM TAB 으로 하면 안 되나요? COL1이 관여해야 하나요?


by 마농 [2019.12.27 13:20:59]

하나의 col2 에 대한 col1 의 값이 중복되지 않는다면?
SUM(DISTINCT col2) 를 이용하면 됩니다.
위에 제시한 전제조건이 맞는지 확인해 보세요.

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