Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Summenabfrage in der letzten Zeile

Erstens brauchen Sie die Unterabfragen nicht, Sie können stattdessen eine Zählung für eine Bedingung durchführen.

Der with rollup Modifikator kann zu group by hinzugefügt werden Klausel, um die Gesamtsumme aufzunehmen. Die order by kann dann nicht in derselben Abfrage verwendet werden, kann aber in einer äußeren Abfrage angewendet werden.

Außerdem mit der Verwendung von coalesce Sie können null ersetzen Wert für diese Gesamtzeile mit dem Label Ihrer Wahl.

Um die Gesamtzeile am Ende trotzdem zu sortieren, könnten Sie schließlich ein is null hinzufügen Ausdruck in der order by -Klausel, die zu false ausgewertet wird oder true . Letzteres wird zuletzt bestellt.

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