group by에 대해서 0 7 4,144

by sql_master [SQL Query] group by [2009.11.18 09:37:49]


안녕하세요.. 맨날 눈팅만하다가 문의드릴게 생겨서 질문드립니다.

제가 하고싶은거는

WITH TEST AS(
SELECT '1234' ACCT , 'jake' CUST FROM DUAL UNION ALL
SELECT '123' ,'jake'  FROM DUAL
)

acct_exec_id | cust_num

1234                   'jake'

123                    'jake'

일경우

cust_num의 갯수가 1이 되게 하는 방법이 있을까요?

제가 한방법이라고는

SELECT COUNT(ACCT),CUST
FROM(
SELECT  ACCT, CUST, ROW_NUMBER()OVER(ORDER BY 1) RN FROM TEST
)
WHERE  RN =1
GROUP BY CUST

이게 다거든요.. 이게 맞는건지.. 아니면 다른방법이 있는지 궁금합니다.

고수님들 부탁드립니다.

by 호야 [2009.11.18 10:10:46]
SELECT COUNT(DISTINCT CUST),CUST FROM TEST GROUP BY CUST

by sql_master [2009.11.18 14:06:40]
호야님 감사합니다. ^^

근데.. 한가지 궁금한게 있는데요...
DISTINCT해서 나온게 CUST가 8482359492902, 2534732345153 이렇게 두개가 있을때는요. 이것의 카운트는 어떻게 구하나요?
SUM(COUNT(DISTINCT CUST)) 이렇게 하니까 그룹함수를 두개를 못쓴다고 하더라구요.. 그래서 제가 해본거라고는
SELECT SUM( COUNT)
FROM (
SELECT COUNT(DISTINCT CUST) COUNT
,CUST FROM TEST GROUP BY CUST
)
이렇게 했는데.. 이방식말고 SUBQUERY 안쓰고 방법이 없을까요?
결국 CUST의 갯수구하는 겁니다.
문제를 잘못파악했어요.. ^^ 죄송합니다.
고수님들 부탁드리겠습니다.

by finecomp [2009.11.18 14:14:51]
SELECT COUNT(DISTINCT CUST) FROM TEST

by 호야 [2009.11.18 14:50:27]
finecomp 형님이 가르켜 주셨네요.ㅎ group by 빼세요

by sql_master [2009.11.18 16:57:55]
감사합니다. finecomp님, 호야님.. ㅜ.ㅜ
그리고 한가지 여기서 SELECT에 COUNT말고 다른 컬럼을 쓰면 GROUP BY넣으라고 에러나는데 COUNT말고는 다른거는 못뽑아내나요?
자꾸 질문드리네요.. ㅜ.ㅜ

by 마농 [2009.11.18 17:33:05]
상식적으로 생각해 보세요. 안됩니다.
count의 결과는 1건입니다.
다른 컬럼의 정보는 1건이 아니라 여러건이겠죠.
그냥 합쳐서 보여주는거는 불가능합니다.
1건으로 조회할지 여러건으로 조회할지 기준을 정하시고 그에 맞는 결과를 그림으로 그려보세요.

by sql_master [2009.11.19 08:53:03]
네... ㅜ.ㅜ 마농님 답변감사합니다.
공부좀 더해야겠네요.. ^^ 이제 좀 쿼리알겠다고 생각했는데 한참 모자르네요..
분발하겠습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입