En primer lugar, no necesita las subconsultas, en su lugar puede hacer un recuento de una condición.
El with rollup
el modificador se puede agregar al group by
cláusula para incluir el total general. El order by
no se puede usar en la misma consulta entonces, pero se puede aplicar en una consulta externa.
Además, con el uso de coalesce
puede reemplazar el null
valor para esa fila total con la etiqueta de su elección.
Finalmente, para ordenar la fila total al final, puede agregar un is null
expresión en el order by
cláusula, que se evaluará como false
o true
. Este último se ordena en último lugar.
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