Przede wszystkim nie potrzebujesz podzapytań, możesz zamiast tego zliczyć warunek.
with rollup
modyfikator można dodać do grupy group by
klauzula o uwzględnienie sumy całkowitej. order by
nie może być użyty w tym samym zapytaniu, ale może być zastosowany w zapytaniu zewnętrznym.
Ponadto za pomocą coalesce
możesz zastąpić null
wartość dla tego wiersza sumy z wybraną etykietą.
Na koniec, aby nadal posortować wiersz sumy na końcu, możesz dodać is null
wyrażenie w order by
klauzula, której wynikiem będzie false
lub true
. Ten ostatni jest zamawiany jako ostatni.
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