합계 구하는 쿼리 ㅜㅜ한번만 도와주세요 0 6 628

by 많이부족합니다 [SQL Query] [2020.09.21 15:35:02]


20200921_151513.jpg (3,535,628Bytes)

파일첨부하였습니다.ㅜㅜ

번거롭게해드려죄송ㅜㅜ

ㅜㅜ이래저래 삽질2시간 하다가

도저히 안될거같아 부족함을 뉘우치고 질의드립니다.

캡처사진에 보이는 TOT로우 음영들어간 부분에 대한

저런합계를 구해야되는데 어떻게 해야할지 막막해서 질문드립니다.

결론.ABC 세로에 대한 합계 3개를 구해야 합니다.ㅜㅜ

by pajama [2020.09.21 15:43:53]

저 컬럼만 있으신가요?

with t as (
select 'A' 구분, 20 건수1, 15 as 건수2, 20 as 건수3 from dual
union all select 'B', 30, 20, 10 from dual
union all select 'C', 25, 12, 10 from dual
)
select * from t
union all
select 'TOT',sum(건수1), sum(건수2), sum(건수3) from t

 


by 마농 [2020.09.21 15:57:30]

결과표만 올리셨네요?
원본 대비 결과표를 올려주셔야죠.
합계는 ROLLUP 을 이용하면 됩니다.
 

WITH t AS
(
SELECT 'A' gb, 1 cd FROM dual
UNION ALL SELECT 'A', 1 FROM dual
UNION ALL SELECT 'A', 2 FROM dual
UNION ALL SELECT 'A', 3 FROM dual
UNION ALL SELECT 'A', 3 FROM dual
UNION ALL SELECT 'B', 1 FROM dual
UNION ALL SELECT 'B', 1 FROM dual
UNION ALL SELECT 'B', 1 FROM dual
UNION ALL SELECT 'B', 2 FROM dual
UNION ALL SELECT 'B', 2 FROM dual
UNION ALL SELECT 'B', 3 FROM dual
UNION ALL SELECT 'C', 1 FROM dual
UNION ALL SELECT 'C', 1 FROM dual
UNION ALL SELECT 'C', 2 FROM dual
UNION ALL SELECT 'C', 3 FROM dual
)
SELECT NVL(gb, 'TOT')
     , COUNT(DECODE(cd, 1, 1)) cnt_1
     , COUNT(DECODE(cd, 2, 1)) cnt_2
     , COUNT(DECODE(cd, 3, 1)) cnt_3
  FROM t a
 GROUP BY ROLLUP(gb)
 ORDER BY a.gb NULLS FIRST
;

 


by 많이부족합니다 [2020.09.21 16:06:52]

저런식으로 되어 있고 컬럼은 5개예요

근데 DB가 알티베이스라

WITH문이 인식안되네요ㅜㅜ


by 많이부족합니다 [2020.09.21 16:07:22]

시간내어 답변주셔서 감사합니다.


by 마농 [2020.09.21 16:12:08]

WITH 문을 사용하라고 답변 드린게 아닙니다.
WITH 문은 테스트를 위한 샘플자료 일 뿐입니다.
쿼리 작성 스타일을 보시면 됩니다.
롤업 기능이 지원된다면? 롤업 사용하시면 되고
그렇지 않다면 별도 합계 쿼리 만들어 UNION ALL 하시면 됩니다.


by 많이부족합니다 [2020.09.21 16:13:24]

시간내어 작성해주셔서 감사합니다.

찾아보구 응용하도록 하겠습니다

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