2014-07-07 2 views
0

1-5 응답 배율 (1 = 좋지 않은 등)을 기반으로하는 설문 조사의 평균을 반환하려면 Access에서 쿼리를 작성하려고합니다. 설문 조사를 생성하고 결과를 데이터베이스에 떨어 뜨리는 소프트웨어 (autodata expertscan)가 대답하지 않은 채 남겨두면 질문에 0 점을 매기므로 평균 (q1)을 수행 할 수 없습니다. 이렇게하면 결과가 왜곡됩니다.액세스의 열에 대한 고유 평균 반환

내가 할 수없는 일 ... 다른 모든 질문 (각 행에 Q1, Q2 등이 있음)을 없애기 때문에 Q1> 1이 어디입니까?

그래서, 나는 그런이

(SELECT avg(VAL) FROM (SELECT ScannedData.Q1 as VAL FROM ScannedData WHERE ScannedData.Q1 > 1)t) AS AvgOfQ1 

으로 쿼리를 수행 할 시도했지만이의 문제는 쿼리가 단일 값을 반환하고 (예를 들어, 5.82)의 모든 행에 동일한 값을 제공합니다.

보고서는 클래스별로 그룹화되므로 클래스 A Q1 5.82, 클래스 B Q1 5.82, 클래스 C Q1 5.82 등의 보고서가 작성됩니다.

이 추가 -이 설문 조사의 모든 질문은 다음과 같이 계산되어야합니다.

요약하면 위에서와 같은 쿼리로 각 클래스 그룹에 대한 평균을 구할 수 있습니다.

도움을 주셔서 감사합니다.

요청한대로 아래에 추가되었습니다.

테이블에 질문 결과가 포함되어 있습니다. 각 질문에 0-6 범위의 값이있는 열이 있습니다. 따라서 조사에서 질문 1의 경우 열의 이름은 1 ~ 6 사이의 값으로 Q1이 지정됩니다. 또한 설문과 관련된 클래스에 관련된 중요도 className 열이 있습니다.

그래서, 나는 (위의 결과에 대한 실제적인 숫자 단지 예)

석면 교육과 같은 결과가 5.82를 Q1Avg 얻을 위 내 쿼리은이

|Q1|Q2|Q3|Q4|ClassName  | 
|1 |5 |4 |5 |Asbestos Training| 
|3 |4 |0 |6 |Asbestos Training| 
|3 |1 |3 |4 |Asbestos Training| 
|4 |3 |5 |4 |Microsoft Word | 
|6 |1 |5 |3 |Microsoft Word | 
|0 |2 |5 |1 |Microsoft Word | 

과 같은 기록이 있습니다 내가 필요로 할 때 Microsoft 교육 Q1AVG 5.82

석면 교육 Q1Avg 2 (예를 들어, 위의 데이터를 사용하여). 33 Microsoft Word Q1Avg 5.00 (0은 건너 뛰었으므로 계산할 필요가 없으며 결과를 왜곡해서는 안됩니다.)

이 데이터베이스를 설계하지 않았습니다. 그것은 소프트웨어가 사용하는 형식입니다. 설문 조사를 만들 때마다 새로운 액세스 데이터베이스가 삭제됩니다.

+2

당신은 몇 가지 샘플 데이터 및 원하는 결과를 제공 할 수 MS Access에서이처럼 보인다? –

+0

Gordon Linoff의 해결책이 맞았습니까? 시도해 보셨습니까? –

답변

2

조건부 집계가 필요할 것으로 생각합니다.

select avg(iif(Q1 > 0, Q1, NULL)) as Q1_avg, 
     avg(iif(Q2 > 0, Q2, NULL)) as Q2_avg, 
     avg(iif(Q3 > 0, Q3, NULL)) as Q3_avg  
from ScannedData; 

당신이 클래스에 의해이 원하는 경우에, group by을 사용합니다 :

select class, avg(iif(Q1 > 0, Q1, NULL)) as Q1_avg, 
     avg(iif(Q2 > 0, Q2, NULL)) as Q2_avg, 
     avg(iif(Q3 > 0, Q3, NULL)) as Q3_avg  
from ScannedData 
group by class; 
+0

이것이 효과가 있습니다! 하위 쿼리를 너무 많이 생각했습니다. 고맙습니다. 아주 간단합니다. 이것은 다음 문제로 이어집니다! – user3813075

관련 문제