Първо, не се нуждаете от подзаявките, вместо това можете да преброите условие.
with rollup
модификатор може да се добави към group by
клауза за включване на общата сума. order by
тогава не може да се използва в същата заявка, но може да се приложи във външна заявка.
Освен това, с използването на coalesce
можете да замените null
стойност за този общ ред с етикета по ваш избор.
И накрая, за да сортирате общия ред в края, можете да добавите is null
израз в order by
клауза, която ще даде оценка на false
или true
. Последният се поръчва последен.
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