2011-12-06 4 views
0

나는 최선을 다해 설명 할 것입니다. 나쁜 데이터 모델로 작업하기. table1에서MySQL 카운트 및 평균 그룹화

Table1 
id, name, area, bla1, bla2, bla3 

Table2 
table1_ID, stuff1, stuff2, ID 

trigger on table1 
insert row in table2 if table1 is updated 

나는 10 개의 서로 다른 영역 만 186 행, 순전히 내가 직접 Excel에서 이초 같은에서이 작업을 수행 할 수 있습니다하지만 난 실시간 보고서를 만들려고합니다. 행이 트리거가 '완료'를 나타내는 표 2에서 몇 가지 물건을 삽입 table1에 업데이트되면

보고서는

area1 - %complete 
area2 - %complete 
area3 - %complete 
etc..... 

이 될 것입니다. 내가 할 수있는

(아마 정말 나쁜 형태)

select 
(select count(*) from table1 a where a.id in (select id from table2)) 
/
(select count(*) from table1) 
*100 

이 나에게 완전한 전체 비율을 제공합니다. 나는 각각의 선택 항목에 where 절을 추가하고, '영역'을 하드 코딩 한 다음 TEN 시간을 통합하려고 생각했습니다. 하나의 보고서에서 이것을 얻을 수있는 더 좋은 방법이 있다고 말해줘.

분명히이 쿼리 어딘가에 거기에 맞게 가지고있다하여이

select area, 
(
(select count(*) from table1 a where a.id in (select id from table2)) 
/
(select count(*) from table1) 
*100) from table1 
group by area 

내가 그룹을 파악 실패입니다. 미리 감사드립니다!

답변

3
select area, count(table2.table1_ID)/count(table1.id) 
from table1 left join table2 on table1.id = table2.table1_ID 
group by area 
+0

감사합니다. 나는 배우고있다. 위는 완벽했다. 나는 보고서에 총계를주기 위해 노동 조합을 추가했다. – user1084424