Mysql
 sql >> Base de données >  >> RDS >> Mysql

sql obtenir le nombre total et filtré en une seule requête

Vous pouvez utiliser Case .. When pour vérifier si points sont supérieurs à 10 pour une ligne particulière et comptez-les en conséquence (en utilisant Sum() ).

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

Dans MySQL, nous pouvons le raccourcir davantage comme Sum() la fonction peut simplement convertir les résultats des opérateurs/fonctions conditionnels en 0/1 (pour faux/vrai respectivement) :

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