Först och främst behöver du inte underfrågorna, du kan istället räkna på ett villkor.
with rollup
modifierare kan läggas till i group by
klausul för att inkludera totalsumman. order by
kan inte användas i samma fråga då, men kan användas i en yttre fråga.
Dessutom, med användning av coalesce
du kan ersätta null
värde för den totala raden med etiketten du väljer.
Slutligen, för att fortfarande sortera den totala raden i slutet, kan du lägga till en is null
uttryck i order by
sats, som kommer att utvärderas till false
eller true
. Den senare beställs sist.
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