MySQL使用group by计算和平均值

时间:2011-12-06 22:03:24

标签: mysql sql join group-by

我会尝试并尽力描述。使用错误的数据模型。

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

Table2
table1_ID, stuff1, stuff2, ID

trigger on table1
insert row in table2 if table1 is updated

table1中我有10个不同的区域,只有186行,而不是我用Excel在2秒内手动执行此操作,但我想创建实时报告。

报告将是

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

当在table1中更新行时,触发器会在table2中插入一些表示“完成”的内容。

我可以做(可能非常糟糕)

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

这给了我一个完整的百分比。 我想在每个选项中添加where子句,硬编码'area'然后联合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

我认为小组必须适应那里。提前谢谢!

1 个答案:

答案 0 :(得分:3)

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