2014-09-18 3 views
0

간단히하기 위해이 예제를 단순화하려고 노력할 것입니다. 반환 된 열의 평균 값을 가져와야합니다. 이해가 되니? 나는 정교하게하려고합니다. (다른 질문에서 차용 샘플 결과)중첩 SQL 쿼리에서 하나의 열 평균을 얻으십시오.

Plant_ID | Year |Quarter| MR | Range 
| CCAR | 2009 | 1  | 706 | Null 
| CCAR | 2009 | 2  | 626 | 0,08 
| CCAR | 2009 | 2  | 637 | 0,11 
| CCAR | 2009 | 2  | 737 | 0,1 
| CCAR | 2009 | 1  | 552 | 0,19 
| CCAR | 2009 | 4  | 418 | 0,137 
| CCAR | 2009 | 1  | 503 | 0,085 
| CCAR | 2009 | 2  | 645 | 0,058 
| CCAR | 2009 | 4  | 743 | 0,098 
| CCAR | 2009 | 3  | 556 | 0,187 
| CCAR | 2009 | 1  | 298 | 0,258 
| CCAR | 2009 | 2  | 339 | 0,041 
| CCAR | 2010 | 1  | 381 | 0,042 

을 나는 각 분기의 평균 MR을 원하는이

Select PlantID, Year, Quarter, MR, Range FROM TestTable WHERE PlantID in('CCAR') 

같은 쿼리를 실행할 때이 결과를 얻을 것입니다. 예비 적으로 나는 이와 같은 것을 시도 할 것입니다.

Select Quarter, AVG(MR) FROM (Select PlantID, Year, Quarter, MR, Range FROM TestTable WHERE PlantID in ('CCAR')) GROUP BY Quarter ORDER BY Quarter 

문제는이 작업을 위해 쿼리를 중첩 할 위치를 모른다는 것입니다. 어떤 도움이 필요합니까?

감사합니다.

+1

인라인보기가 필요한 이유가 표시되지 않습니다. 두 번째 쿼리에 관해서는 출력에 어떤 문제가 있습니까? 비록 당신이 내부 쿼리에서 각각의 MR에 대한 평균을 잡았다면 다른 것은 아니지만 구문 상 유효합니다. –

+1

브라이언에 동의합니다. 지정한 요구 사항에서 중첩 할 필요가 없습니다. 단순히 테이블에서 집계 쿼리를 직접 실행할 수 있습니다. – bernie

+0

그럼 "분기 선택, 평균 (MR) TestTable에서 PlantID가 '(CCAR') 그룹 별 분기 '중 어디에 위치합니까? – 1337Atreyu

답변

0

예를 들어 별명을 추가하십시오. 난 당신이 분기와 올해 원하는 가정

select Year, Quarter, avg(MR) 
from TestTable 
where PlantID in ('CCAR') 
group by Year, Quarter; 

이이 경우에 필요하지 않습니다 동안 안녕

Select Quarter, AVG(MR) FROM 
(Select PlantID, Year, Quarter, MR, Range FROM TestTable WHERE PlantID in ('CCAR')) hallo  
GROUP BY Quarter ORDER BY Quarter 

는, 다음

Select Quarter, AVG(MR) 
FROM TestTable 
WHERE PlantID in ('CCAR') 
GROUP BY Quarter 
ORDER BY Quarter 
0

그냥 집계를 사용 충분하다. 그렇지 않은 경우 selectgroup by에서 일년을 삭제하면됩니다.

관련 문제