2013-07-01 4 views
1

Microsoft Access에서 쿼리를 만들면 필드의 고유 요소가 계산되고이 값이 총 요소 수의 백분율로 출력됩니다.필드의 요소 빈도를 백분율로 출력하는 Microsoft Access 쿼리는 어떻게 작성합니까?

예 I은 8 개 개의 요소의 다음 필드와 테이블의 sampletable 있었다면 :

LetterValue

Z

X

X

X

Y

X

Z

예 I 다음

LetterValue 비율

X 50 %

Y 25 %

를 반환 출력을 찾고

z 25 %

이 간단한 카운트 쿼리를 수정하여이 결과를 얻을 수 있습니까?

SELECT LetterValue, COUNT(*) AS QTY 
FROM SampleTable 
GROUP BY LetterValue; 
+1

잘 같은이 출력됩니다 , 당신은 각 글자 값에 대한 카운트를 가지고 있습니다. 그래서 총 글자 수를 얻고, 본질적으로 백분율을가집니다. –

+0

슬프게도 MS Access에서이 작업을 수행하는 방법을 모르지만 찾고있는 기능은 ** 피벗 **입니다. 어쩌면 도움이 될 것입니다. –

+0

예, 그 의미가 있습니다.하지만 유감스럽게도 저는 쿼리에서 백분율을 출력하도록 구체적으로 말했습니다. – Calle

답변

3

문자열로 값을 변환 포함이 질문에 여러 부분, (그래서 당신은 '%'를 추가 할 수 있습니다)가 있습니다

SELECT LetterValue, cdbl(100.0*COUNT(*)/tot.tot)&'%' AS QTY 
FROM SampleTable st, 
    (select COUNT(*) as tot 
     from SampleTable st 
    ) tot 
GROUP BY LetterValue; 
+0

이 방법이 효과가 있지만 문제는 예제에 8 개의 값이 있지만이 값을 적용 할 테이블에 1000000 개가 넘는 값이 있습니다. 실행 할 때마다 테이블 값을 전가하지 않고이를 수행 할 수있는 방법이 있습니까? – Calle

+0

@Calle이 쿼리는 문제와 관련이 없으며 2 개의 값 또는 백만 개의 값이있는 경우 작동합니다. 하지만 고든, 아마도 오타가 그를 혼란스럽게 할 수 있습니다. 'tot.to'는 아마 매개 변수를 입력하라고 요구할 것입니다. 그것은'tot.tot'이어야합니다. – Scotch

+0

@Scotch. . . 그 점을 지적 해 주셔서 감사합니다. 이제 수정되었습니다. –

2

당신이 또한

처럼 뭔가를 할 수
SELECT group_counts.letter, group_counts.countNums, (group_counts.countNums/total_count.total_nums*100) AS [Percent] 
    FROM (SELECT letter, Count(*) AS countNums 
    FROM [yourTable] GROUP BY letter) AS group_counts, 
    (SELECT Count(*) AS total_nums FROM [yourTable]) AS total_count; 

Letter  CountNums  Percent 
a   2    20 
b   4    40 
c   2    20 
d   1    10 
e   1    10 
관련 문제