MySQL считает и усредняет с группой по - PullRequest
0 голосов
/ 07 декабря 2011

Я постараюсь описать как можно лучше.Работа с неверной моделью данных.

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 строк, не так много, я не могу сделать это вручную в течение 2 секунд с Excel, но я хочусоздать отчет в реальном времени.

Отчет будет

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

Когда строка обновляется в table1, триггер вставляет некоторые данные в таблицу2, указывая «завершено».

Я могу сделать (вероятно, действительно плохая форма)

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

Это дает мне общий процент завершения.Я думал о добавлении предложений where к каждому из select, жестком кодировании 'area', а затем объединении десятков раз.Тьфу, скажи мне, что есть лучший способ получить это в одном отчете.

Очевидно, что этот запрос - неудачный

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

Я считаю, что группа by где-то должна туда вписаться.Заранее спасибо!

1 Ответ

3 голосов
/ 07 декабря 2011
select area, count(table2.table1_ID) / count(table1.id)
from table1 left join table2 on table1.id = table2.table1_ID
group by area
...