sql >> Databasteknik >  >> RDS >> Mysql

sql få totalt och filtrerat antal i en fråga

Du kan använda Case .. When för att kontrollera om points är fler än 10 för en viss rad, och räkna den därefter (med Sum() ).

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

I MySQL kan vi förkorta det ytterligare som Sum() funktion kan helt enkelt casta resultat av villkorliga operatorer/funktioner till 0/1 (för falskt/sant respektive):

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


  1. =) Operatör för nybörjare

  2. Två främmande nycklar istället för primära

  3. Sqlite eller MySql? Hur bestämmer man sig?

  4. Formatera nummer med kommatecken i MariaDB