Erstens brauchen Sie die Unterabfragen nicht, Sie können stattdessen eine Zählung für eine Bedingung durchführen.
Der with rollup
Modifikator kann zu group by
hinzugefügt werden Klausel, um die Gesamtsumme aufzunehmen. Die order by
kann dann nicht in derselben Abfrage verwendet werden, kann aber in einer äußeren Abfrage angewendet werden.
Außerdem mit der Verwendung von coalesce
Sie können null
ersetzen Wert für diese Gesamtzeile mit dem Label Ihrer Wahl.
Um die Gesamtzeile am Ende trotzdem zu sortieren, könnten Sie schließlich ein is null
hinzufügen Ausdruck in der order by
-Klausel, die zu false
ausgewertet wird oder true
. Letzteres wird zuletzt bestellt.
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