Za prvé nepotřebujete dílčí dotazy, místo toho můžete počítat s podmínkou.
with rollup
modifikátor lze přidat do group by
klauzule zahrnout celkový součet. order by
nelze pak použít ve stejném dotazu, ale lze je použít ve vnějším dotazu.
Navíc s použitím coalesce
můžete nahradit null
hodnotu pro tento celkový řádek se štítkem dle vašeho výběru.
Nakonec, chcete-li stále seřadit celkový řádek na konci, můžete přidat is null
výraz v order by
klauzule, která bude vyhodnocena jako false
nebo true
. Poslední se objednává jako poslední.
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