Exceller's Home > 사용자 제공 자료

'무지개타고'님의 통계강좌

- 최초 작성일 : 2008-01-22
- 최종 수정일 : 2008-01-22

- 강좌 읽음수 : 4,314회
- 자료 작성자 : 무지개타고 (조석현님)

- 자료 편집자 : Exceller (권현욱, exceller@amorepacific.com)

강좌 제목 : 통계로 세상보기 - (41) 어설픈 집계용 쿼리

 

'통계'라고 하면 여러분은 어떤 생각이 드시나요? 저는 개인적으로 좋은 기억보다 그렇지 않은 기억이 많습니다만, 최근 들어 통계를 좀더 공부해야겠다는 생각을 많이 하고 있습니다.

이번 시간에 함께 할 주제는 '무지개타고'님의 재미있는 통계이야기입니다. '무지개타고'님은 '통계로 세상보기'라는 블로그(http://instatistics.officetutor.org/)를 운영하고 있기도 합니다. 위트와 재미가 있는 통계강좌에 빠져보시기 바랍니다.


예제 파일 내려받기


어떤 자료든 분석을 위해서는 일차적으로 요구되는 양식에 따른 집계를 해야한다. 이 때 통계 처리용 프로그램이 별도로 있다면 좀더 손 쉽겠지만, 집계 정도는 액세스도 문제 없다. 이에 일전에 다뤄던 에어컨 조사 자료를 액세스로 집계해보자.

자 그럼 원시자료 테이블은...

11 

테이블을 보아서 알겠지만, 재주가 허접 그 자체라 이후 내용이 별 도움이 될지 모르겠다. 엑셀에 보면 '피벗테이블' 이라는 게 있는데, 액세스에도 이와 유사한 기능이 있다. '크로스탭 쿼리(Crosstab Query)'라고...

12

그런데 뭔가가 어설프다. 특히 "전체" 즉 열 합계가 없다. 그래서 좀더 품을 팔면...

13

오우 이런... "전체"를 삽입하긴 했는데, 항목의 정렬 방식이 원하는 형식이 아니다. 정렬 방식은 이후 처리하는 것으로 넘기고 자료를 좀더 보자. "유", "무" 정보가 빈도를 나타내고 있는데, 비율을 알기 위해서는 다시 계산해야 하는 번거로움이 있다. 그래서 "유", "무" 정보를 비율 정보로 조정하면...

 14

이제 어느 정도 모양새가 갖춰진 기분이다. 지금까지는 층구분에 따른 에어컨 유무를 집계하는 1 대 1 크로스탭 이었다면, 에어컨 유무를 층구분이 아닌 면적으로 보고싶을 때도 있을 것이고 선호층으로 보고싶을 때도 있을 것이다. 즉, 크로스탭에 다수에 항목을 동시에 삽입해서 볼 수 있는 다 대 1 크로스탭이 요구된다는 것.

이 때 앞서 반영하지 못한 정렬 기능까지 추가한다면...(참고로 정렬 방식은, 원하는 양식을 먼저 밑그림을 그리고 나서 행에 고유번호를 등록했다. 그리고 통합 쿼리와 조인하는 방식을 적용해 보았다)

15

분류 열에 중복되는 정보를 엑셀에서처럼 셀 병합 했으면 좋겠지만, 재주가 거기까지는 미치지 못하기에 이정도 쯤에서 만족해야겠다.

TRANSFORM Round(nz(Count(선별)/사례수,0),3) AS 비율
SELECT temp.분류, temp.항목, Count(temp.선별) AS 사례수
FROM [select 분류, 항목, 선별 from (
select "전체"    as 분류, ""        as 항목, 에어컨 as 선별 from Data union all
select "동"      as 분류, 동        as 항목, 에어컨 as 선별 from Data union all
select "층구분"  as 분류, 층구분    as 항목, 에어컨 as 선별 from Data union all
select "선호층"  as 분류, 선호층    as 항목, 에어컨 as 선별 from Data union all
select "층"      as 분류, 층&"층"   as 항목, 에어컨 as 선별 from Data union all
select "면적"    as 분류, 면적      as 항목, 에어컨 as 선별 from Data union all
select "위치"    as 분류, 위치      as 항목, 에어컨 as 선별 from Data
)]. AS temp LEFT JOIN ord ON (temp.항목 = ord.항목) AND (temp.분류 = ord.분류)
WHERE (((temp.항목) Is Not Null))
GROUP BY ord.order_no, temp.분류, temp.항목
ORDER BY ord.order_no
PIVOT temp.선별 In ("유","무");

물론 VBA가 능숙하다면 엑셀에서도 손쉽게 집계가 가능하겠는데, VBA는 담 쌓고 지내는 분야라 다른 고수님들의 조언을 바란다.


Previous

Next

ⓒ Since 2007 Exceller Corporation. All rights reserved.

이 페이지의 저작권은 컨텐츠 제공자에게 있습니다.

본 강좌의 내용은 필자 개인의 견해이며, 아이엑셀러 닷컴의 공식 견해와 일치하지 않을 수도 있습니다.