sql >> Databáze >  >> RDS >> Mysql

Celkový dotaz v posledním řádku

Za prvé nepotřebujete dílčí dotazy, místo toho můžete počítat s podmínkou.

with rollup modifikátor lze přidat do group by klauzule zahrnout celkový součet. order by nelze pak použít ve stejném dotazu, ale lze je použít ve vnějším dotazu.

Navíc s použitím coalesce můžete nahradit null hodnotu pro tento celkový řádek se štítkem dle vašeho výběru.

Nakonec, chcete-li stále seřadit celkový řádek na konci, můžete přidat is null výraz v order by klauzule, která bude vyhodnocena jako false nebo true . Poslední se objednává jako poslední.

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. Metoda vyhledávacích polí MYSQL

  2. Kritéria filtru SQL v kritériích spojení nebo klauzuli where, která je efektivnější

  3. Jak funguje funkce MAKE_SET() v MySQL

  4. jak deklarovat %ROWTYPE proměnné, která má slabý typ SYS_REFCURSOR?