group by와 sum 질문 0 4 721

by 킨지 [SQL Query] [2019.03.08 15:27:57]


SELECT A.RESCCC_BIFCLSS_CD,c.CM_CD_NM as RESCCC_BIFCLSS_NM
, B.ATT_ORG_CD
, B.ATT_ORG_NM
,A.SPP_CNT
,A.RESCCC_CNT
,A.RESCCC_CNT_TD
,A.RESCCC_CNT_TO

FROM SYS_COND A, CM_OTT_INFO B , CM_TT_INFO C 
WHERE A.ATT_ORG_CD = B.ATT_ORG_CD
AND   A.RESCCC_BIFCLSS_CD = C.CM_CD
AND C.CM_TT_CLS_CD= 'X0009'
AND C.CM_TT_CD_NM = '중국'
GROUP BY A.RESCCC_BIFCLSS_CD,B.ATT_ORG_NM,B.ATT_ORG_CD,c.CM_TT_CD_NM,A.SPP_CNT,A.RESCCC_CNT,A.RESCCC_CNT_TD,A.RESCCC_CNT_TO
ORDER BY B.ATT_ORG_NM;

 

1 중국 cta   베이징  22  41 23 12

1 중국 cosa  하얼빈 1   3   4   5

1 중국 cosa  하얼빈 2  3    2   2

1 중국 cosa  하얼빈 3  3    7   5

1 중국 kore  광저우  3  4    5   6

1 중국 kore  광저우  2  3    5   1

일단 이렇게 나오구요

SELECT A.RESORCE_BIFCLSS_CD,c.CM_CD_NM as RESORCE_BIFCLSS_NM
, B.AFF_ORG_CD
, B.AFF_ORG_NM
,SUM(A.SPC_CNT)
,SUM(A.RESORCE_CNT)
,SUM(A.RESORCE_CNT_TD)
,SUM(A.RESORCE_CNT_TO)

FROM ST_ORG_CLS_SYS_COND A, CM_ORG_INFO B , CM_CD_INFO C 
WHERE A.AFF_ORG_CD = B.AFF_ORG_CD
AND   A.RESORCE_BIFCLSS_CD = C.CM_CD
AND C.CM_CLS_CD= 'X0009'
AND C.CM_CD_NM = '중국'
GROUP BY A.RESORCE_BIFCLSS_CD,B.AFF_ORG_NM,B.AFF_ORG_CD,C.CM_CD_NM
ORDER BY B.AFF_ORG_NM;

1 중국 cta   베이징  22  41 23 12 <-- 합

1 중국 cosa  하얼빈 6   9   13   12 <-- 합 

1 중국 kore  광저우  5  7    10   7 <-- 합

이렇게 나옵니다.

1. SUM을 일일히 저렇게 써야하는지 궁금합니다.. GROUP처럼 묶어서 표현할수는 없나요?

2.  WHERE A.AFF_ORG_CD = B.AFF_ORG_CD 이건 외래키가 있어서 조인이 딱되는데

AND A.RESORCE_BIFCLSS_CD = C.CM_CD 이같은경우에는 A 하고 C 테이블이 연관이 없는데 어쩔수없이 조인을 했습니다..(속성데이터가 맞아서...) 갯수는 맞게 나옵니다만

찝찝해서 그렇습니다.  이런경우는 어떻게 해야되나요?

 

by inbeater [2019.03.08 18:27:14]

테이블 연관이 없는데... 어쩔수 없이 조인을 했다라... 테이블 데이터 예시로 보여주시면 좋았겠지만... 연관 없는 컬럼을 조인하는건....  수학으로 치면 연산 자체를 맞지 않게 했다... 가 아닌가요... 제 짧은 지식으로는 left outer 조인으로 어떻게 해결책을 찾을수 있을거 같긴한데...


by 우리집아찌 [2019.03.08 18:27:40]

원하신는 결과가 밑의것이 맞다면 SUM() 함수를 사용하셔야죠.

혹시 다른 결과값을 원하시는것 아니신가요?


by 느훼훼 [2019.03.11 14:43:17]

SUM() OVER() 와 ROW_NUMBER() OVER() 를 같이 사용하시면 될 거 같아요. 이 질문 위에도 비슷한 질문이 있었어요.

방법은 여러가지가 있을 거 같아요.


by 마농 [2019.03.12 08:33:08]

1. 일일히 SUM 해주셔야 합니다.
2. 연관관계가 없다고 생각하시는듯 한데요?
 - 조인해서 결과가 맞게 나온다면? 연관관계가 있는거죠.
 - 코드 테이블 같은 경우에는 여러 테이블에서 참조를 하기 때문에 일부러 FK 설정을 안하기도 합니다.
 - 코드 테이블이 아니더라도 FK 설정 자체를 안하는 곳도 많습니다.

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