Trước hết, bạn không cần các truy vấn phụ, thay vào đó, bạn có thể đếm theo một điều kiện.
with rollup
công cụ sửa đổi có thể được thêm vào nhóm group by
mệnh đề bao gồm tổng tổng. order by
sau đó không thể được sử dụng trong cùng một truy vấn, nhưng có thể được áp dụng trong một truy vấn bên ngoài.
Hơn nữa, với việc sử dụng coalesce
bạn có thể thay thế null
giá trị cho tổng hàng đó với nhãn bạn chọn.
Cuối cùng, để vẫn sắp xếp tổng số hàng ở cuối, bạn có thể thêm một is null
biểu thức theo thứ tự order by
mệnh đề này sẽ đánh giá thành false
hoặc true
. Cái sau được đặt hàng sau cùng.
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