oracle 통계 문의 0 3 2,065

by hyukvin [SQL Query] oracle 통계 [2022.03.18 14:44:51]


통계를 내려고 하는데..  너무 어렵네요 ㅠㅠ

 

YEAR TMP1 TMP2 GUBUN
2015 5 0 B
2015 0 0 S
2016 1 46.0 B
2016 1 7.7 S
2016 1 12.3 S
2016 1 8.2 B
2017 0 0 S
2017 1 21.7 B
2020 2 0 B
2020 1 7.4 S
2020 0 0 S
2020 1 8.6 B

이런식으로 데이터가 들어 있을때

 

년도 S B TOTAL
  TMP1 TMP2 TMP1 TMP2 TMP1 TMP2
2015 0 0 5 0 5 0
2016 1 12.3 1 46.0 2 58.3
2016 1 7.7 1 8.2 2 15.9
2017 0 0 1 21.7 1 21.7
2020 0 0 1 7.4 1 7.4
2020 0 0 1 8.6 1 8.6
TOTAL 2 20.0 10 91.9 12 636.6

이렇게 출력하고 싶은데 짧은 지식으론 이렇게 출력이 안됩니다.. ㅠㅠ

 

  S B TOTAL
year tmp1 tmp2 tmp1 tmp2 tmp1 tmp2
...            
2015 0 0 0 0 0 0
2015 0 0 5 0 5 0
2016 1 12.3 0 0 1 12.3
2016 1 7.7 0 0 1 7,7
2016 0 0 1 46.0 1 46
2016 0 0 1 8.2 1 8.2
...            

계속 이렇게만 출력이 되네요..

 

제가 원하는건 아래처럼 연도별 값이 0이면 행을 합쳐서 보여주고 싶은데 잘안됩니다..

2016 1 12.3 1 46.0 2 58.3
2016 1 7.7 1 8.2 2 15.9

도움부탁드립니다!

 

by 마농 [2022.03.20 22:28:49]
WITH t AS
(
SELECT '2015' year, 5 tmp1, 0 tmp2, 'B' gubun FROM dual
UNION ALL SELECT '2015', 0,  0.0, 'S' FROM dual
UNION ALL SELECT '2016', 1, 46.0, 'B' FROM dual
UNION ALL SELECT '2016', 1,  7.7, 'S' FROM dual
UNION ALL SELECT '2016', 1, 12.3, 'S' FROM dual
UNION ALL SELECT '2016', 1,  8.2, 'B' FROM dual
UNION ALL SELECT '2017', 0,  0.0, 'S' FROM dual
UNION ALL SELECT '2017', 1, 21.7, 'B' FROM dual
UNION ALL SELECT '2020', 2,  0.0, 'B' FROM dual
UNION ALL SELECT '2020', 1,  7.4, 'S' FROM dual
UNION ALL SELECT '2020', 0,  0.0, 'S' FROM dual
UNION ALL SELECT '2020', 1,  8.6, 'B' FROM dual
)
SELECT NVL(year, 'TOTAL') year
     , SUM(DECODE(gubun, 'S', tmp1)) tmp1_s
     , SUM(DECODE(gubun, 'S', tmp2)) tmp2_s
     , SUM(DECODE(gubun, 'B', tmp1)) tmp1_b
     , SUM(DECODE(gubun, 'B', tmp2)) tmp2_b
     , SUM(tmp1) tmp1
     , SUM(tmp2) tmp2
  FROM (SELECT year, tmp1, tmp2, gubun
             , ROW_NUMBER() OVER(PARTITION BY year, gubun ORDER BY 0) rn
          FROM t
        )
 GROUP BY ROLLUP((year, rn))
;

 


by hyukvin [2022.04.06 17:46:36]

답변 채택 기능을 이제 알았어요 ^^;;

늦었지만 살포시 채택 클릭하였습니다~!

 


by hyukvin [2022.03.21 09:23:45]

와.. 정말 감사합니다.

통계 내는게 제일 어려운거 같아요..ㅠㅠ

이틀동안 이리저리 해보다가

안되면 테이블 구조를 바꿔야 하나;; 까지 생각을 했었는데

정말 큰 도움 되었습니다. 감사합니다!

 

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