SQL 관련 질문 드립니다. 0 4 1,655

by 체크포인트 [MySQL] [2014.06.11 11:18:21]


MYSQL 을 사용 하고 있는데 단순 할것 같은데 생각보다 쉽게 되지 않아 질문을 드립니다.

아래와 같은 테이블이 1개가 있는데 Group Count를 하고자 하는데 많은 서브 쿼리를 사용하지 않고

구현하고자 합니다.... 잘안되네요 ㅠㅠ 도움 요청 드립니다.

■ 테이블(ID 와 Values 는 2개 테이블로 Join 해서 나온 결과 테이블 입니다.)

ID VALUES
A 1
B 1
C 2
D 3
E 3
F 3

■  결과 테이블

    (값에 따라 1이 2개고 2가 1개고 3이 3개인데  현재 위에 테이블이 2개 테이블로 JOIN  된 테이블이라 서브쿼리로 재 질의 하는 방법 말고 그룹 Count를 하고 싶어요 ㅠ)

ID VALUES CNT
A 1 2
B 1 2
C 2 1
D 3 3
E 3 3
F 3 3
by 아발란체 [2014.06.11 12:10:50]

MySQL은 윈도우 함수가 없고, 그룹바이 하자니... ID 값이 무시되어버리고...

서브쿼리 쓰셔야 할 것 같은데... .ㅋㅋㅋㅋ

아님 원본이 조인 결과라고 하셨으니 조인 되기 전 데이타셋 유형을 주시면

조인 할 때 아예 저렇게 뜨게끔 고민해 볼 수도 있겠네용.


by 체크포인트 [2014.06.11 13:02:41]

원본은 T1의 ID와 T2의 ID를 join 해서 T1의 ID 값과 T2의 Flag(문자열) 값을 VIEW 한게 첫번째 테이블 입니다.


by 마농 [2014.06.11 23:19:55]
SELECT a.id
     , b.values
     , c.cnt
  FROM t1 a
     , t2 b
     , (SELECT t2.values
             , COUNT(*) cnt
          FROM t1
             , t2
         WHERE t1.id = t2.id
         GROUP BY t2.values
        ) c
 WHERE a.id = b.id
   AND b.values = c.values
;
-- MySQL 에는 분석함수가 없으므로 서브쿼리를 써야죠.
-- 만약 T1에 없는 ID가 T2에 절대로 있을 수 없다면?
-- 그룹바이 서브쿼리 안에서의 조인은 안해도 되겠네요.

 


by 윤 [2014.07.03 13:03:31]

with t as(
select 'A' ID, 1 val from dual union all
select 'B',1 from dual union all
select 'C',2 from dual union all
select 'D',3 from dual union all
select 'E',3 from dual union all
select 'E',3 from dual union all
select 'F',3 from dual
)
select ID
      ,t.val
      ,cnt from t,
      (select val,count(val)cnt from t
       group by val)a
where t.val=a.val
;

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