Вы ищете conditional aggregation
.Вот один подход с sum
и case
, который должен работать с большинством баз данных (хотя mysql
поддерживает сокращенные версии):
select platform, testsuite,
sum(case when status = 'pass' then 1 else 0 end) pass,
sum(case when status = 'fail' then 1 else 0 end) fail,
sum(case when status = 'abort' then 1 else 0 end) abort,
count(*) total
from yourtable
group by platform, testsuite
Или, поскольку вы используете mysql
:
select platform, testsuite,
sum(status = 'pass') pass,
sum(status = 'fail') fail,
sum(status = 'abort') abort,
count(*) total
from yourtable
group by platform, testsuite