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

sql získat celkový a filtrovaný počet v jednom dotazu

Můžete použít Case .. When zkontrolovat, zda points je více než 10 pro konkrétní řádek a podle toho je započítejte (pomocí Sum() ).

SELECT COUNT(*) as total, 
       SUM(CASE WHEN points > 10 THEN 1 ELSE 0 END) AS winners, 
       team 
FROM users 
GROUP BY team

V MySQL jej můžeme dále zkrátit jako Sum() funkce může jednoduše přetypovat výsledky podmíněných operátorů/funkcí na 0/1 (pro false/true v tomto pořadí):

SELECT COUNT(*) as total, 
       SUM(points > 10) AS winners, 
       team 
FROM users 
GROUP BY team


  1. Proč parametrizovaný dotaz vytváří mnohem pomalejší plán dotazů ve srovnání s neparametrizovaným dotazem

  2. Příkaz MySQL pro výběr nejnovější položky konkrétního sloupce

  3. Proč je mysqldump s jednou transakcí konzistentnější než bez?

  4. Trunc datum pole v mysql jako Oracle