Em primeiro lugar, você não precisa das subconsultas, você pode fazer uma contagem em uma condição.
O
with rollup
modificador pode ser adicionado ao group by
cláusula para incluir o total geral. O order by
não pode ser usado na mesma consulta, mas pode ser aplicado em uma consulta externa. Além disso, com o uso de
coalesce
você pode substituir o null
valor para essa linha total com o rótulo de sua escolha. Por fim, para ainda classificar a linha total no final, você pode adicionar um
is null
expressão no order by
cláusula, que será avaliada como false
ou true
. Este último é pedido por último. select coalesce(checkby, 'Total') as checkby_or_total,
fully,
faulty,
lasthour,
total
from (
select qcheck.checkby,
count(case result when 'fully tested & working' then 1 end) as fully,
count(case result when 'faulty' then 1 end) as faulty,
count(case when finishdate >= now()-interval 1 hour then 1 end) as lasthour,
count(*) as total
from qcheck
where date(finishdate) = CURDATE()
and qcheck.checkby not like 'michael'
and qcheck.checkby not like 'chaz'
group by qcheck.checkby with rollup
) as main
order by checkby is null,
total desc