2011-02-11 2 views
0

현재 보고서 생성기 작성 중입니다. 한 보고서의 경우 주어진 특성 (공급자, 로깅 사용자, 언어 등)별로 분석 할 필요가 있습니다. 각 행에 대해 내가 관심있는 특성의 이름, 해당 특성에 맞는 항목의 수, 이 수치가 나타내는 전체 항목의. 처음 두 세 번째는, 문제가되지 않습니다.MySQL : 추가 계산에 집계 결과 사용

예를 들어, 나는이 같은 쿼리를 사용하는 것입니다 언어에 의한 고장을 얻을 수 있습니다.

SELECT lang_id, 
COUNT(IF(open=TRUE,1,NULL)) AS lang_total 
FROM table 
GROUP BY lang_id; 

이렇게하면 언어 당 항목 수가 달라집니다.

테이블의 총 항목 수를 변수 sim에 저장할 수 있습니다. 평범한 숫자로 충분 해.

SELECT @totalOpen:=COUNT(*) FROM table WHERE open = TRUE; 

이제 I 100 곱한 @totalOpen의 값으로 나눈 lang_total의 도면 인 세 번째 열을 추가 할 (즉, 기준에 맞는 모든 항목의 백분율). 다음의 행에있는 것 :

계산에 집계 열을 사용할 수 없다고 말할 수 있기 때문에 문제가 있습니다.

SELECT lang_id, 
COUNT(IF(open=true,1,NULL)) AS lang_total 
(lang_total/@totalOpen)*100 as lang_percent 
FROM table 
GROUP BY lang_id; 

MySQL에서이 작업을 수행해야합니다.하지만 추적 할 수 없었습니다. 아무도 이것으로 도와 줄 수 있습니까?

답변

1

나는이 질문을 처음으로 읽었습니다. 아마 당신에게 유용하기에는 너무 늦었지만 이런 식으로 해결했을 것입니다.

select lang_id, 
sum(if(open= true,1,0)) as lang_total, 
coalesce(sum(if(open= true,1,null))/@r,0) as percentage 
from table,(select @r:=count(*) from table where open = TRUE) as t 
group by lang_id;