Pertama-tama, Anda tidak memerlukan sub kueri, Anda dapat melakukan penghitungan pada suatu kondisi.
with rollup
pengubah dapat ditambahkan ke group by
klausul untuk memasukkan total keseluruhan. order by
tidak dapat digunakan dalam kueri yang sama, tetapi dapat diterapkan dalam kueri luar.
Selanjutnya, dengan penggunaan coalesce
Anda dapat mengganti null
nilai untuk total baris tersebut dengan label pilihan Anda.
Terakhir, untuk tetap mengurutkan total baris di akhir, Anda dapat menambahkan is null
ekspresi dalam order by
klausa, yang akan dievaluasi menjadi false
atau true
. Yang terakhir dipesan terakhir.
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