각 테이블 통계를 내야하는데 넘 어렵네요. 도움부탁드립니다. 0 9 1,030

by 이동원 [2007.11.09 10:42:17]


각 테이블들을 묶어서 통계를 내야 하는데 이제 막 시작한 초보로써 상당히 어렵네요.

이런저런 찾아보고 적용해봐도 에라만 떠서 이렇게 질문과 답변란에 글적습니다. ㅠ.ㅠ

 

날짜             기호     ID     연계     신규     채결건수    

20070831      10186     a       10                      5        

20070901      10186     b       15                      10

20070902      10024     c                  20           15

20070902      10186     a       10                      9

20070902      10012     d                  10           8

20070903      10024     e       20                      16

20070903      10023     f        11                      9

 

이런식의 결과값이 나와야 합니다.

 

각 연계 신규 채결건수컬럼은 전부 각각 테이블로 구성되어 있습니다.,

연계(log_aba1) 신규(log_aba2) 채결건수(log_aba3)

 

각 테이블당 날짜(daytume)  기호(no)  regino(등기번호)  result(결과)

등기번호는 결과값이 0이 되야 처리되므로 0이 아니면 완료값이 아니라

regino는 중복값이 있어서 distinct함수로 사용해서 중복된걸 하나로 처리했습니다.

각 테이블당 통계는 하다보니

 

select substr(daytime, 0, 8), no, id,count(DISTINCT regino)
from log_aba1 where substr(daytime, 0, 8)
between '20070831' and '20070930' and result = 0
group by substr(daytime, 0, 8), no, id

 

이렇게 뽑아졌는데 위처럼 각 테이블들 전체를 뽑아서 하는게 저 머리로는 해결이되지 않는군요. 도움부탁드립니다. ㅠ.ㅠ

 

 

 

by 현 [2007.11.09 00:00:00]
union all 하고 group by로 해서 한번 해보세요..

by 이동원 [2007.11.09 00:00:00]
union all은 해보긴 해봤는데요 ㅠ.ㅠ
문제는 출력이 생각했던것처럼 안되서
group by를 이리저리 돌려보았는데 ㅠ.ㅠ
잘 안되더라구요....

by 채용근 [2007.11.09 00:00:00]
샘플 데이터를 만들어주심이..

by 이동원 [2007.11.09 00:00:00]
맨 위에있는 셈플 말고 더 필요한게 있나요? ㅠ.ㅠ
어떤건지 좀 알려주세요.

by 채용근 [2007.11.09 00:00:00]
저 결과값이 나오기 위한 기초데이터 그리고 컬럼 이름을 적어달라는 얘기임

by 마농 [2007.11.09 00:00:00]
SELECT ymd, no, id
, SUM(cnt1), SUM(cnt2), SUM(cnt3)
FROM
(
SELECT SUBSTR(daytime,1,8) ymd, no, id
, COUNT(DISTINCT regino) cnt1, 0 cnt2, 0 cnt3
FROM log_aba1
WHERE daytime > '20070831'
AND daytime < '20071001'
AND result = 0
GROUP BY SUBSTR(daytime,1,8), no, id
UNION ALL
SELECT SUBSTR(daytime,1,8) ymd, no, id
, 0 cnt1, COUNT(DISTINCT regino) cnt2, 0 cnt3
FROM log_aba2
WHERE daytime > '20070831'
AND daytime < '20071001'
AND result = 0
GROUP BY SUBSTR(daytime,1,8), no, id
UNION ALL
SELECT SUBSTR(daytime,1,8) ymd, no, id
, 0 cnt1, 0 cnt2, COUNT(DISTINCT regino) cnt3
FROM log_aba3
WHERE daytime > '20070831'
AND daytime < '20071001'
AND result = 0
GROUP BY SUBSTR(daytime,1,8), no, id
)
GROUP BY ymd, no, id

by 이동원 [2007.11.09 00:00:00]
아...... 이런식으로 묶는군요.. 감사합니다 ㅠ.ㅠ

by 채용근 [2007.11.09 00:00:00]
굉장히 빠르시네요 마농님 -_-;

by 현 [2007.11.09 00:00:00]
역시 마농님이 제 해결사군요.
이동원님..union all 하고 group by는 저렇게 하시면 됩니다...^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입