sql >> Database >  >> RDS >> Mysql

Totale zoekopdracht in laatste rij

Allereerst heb je de subquery's niet nodig, je kunt in plaats daarvan tellen op een voorwaarde.

De with rollup modifier kan worden toegevoegd aan de group by clausule om het eindtotaal op te nemen. De order by kan dan niet in dezelfde zoekopdracht worden gebruikt, maar kan worden toegepast in een buitenste zoekopdracht.

Bovendien, met het gebruik van coalesce je kunt de null . vervangen waarde voor die totale rij met het label van uw keuze.

Ten slotte, om de totale rij aan het einde nog steeds te sorteren, kunt u een is null toevoegen uitdrukking in de order by clausule, die zal evalueren tot false of true . De laatste wordt als laatste besteld.

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 



  1. Hoe weet je wanneer GroovyStrings niet hetzelfde worden behandeld als Strings?

  2. Query die de spaties negeert

  3. Hoe onverwachte groei van SQL Server-database TempDB te detecteren en te voorkomen?

  4. Verbinding maken met MySQL met Node.js