sql >> Database >  >> RDS >> Mysql

sql krijgt het totale en gefilterde aantal in één query

U kunt Case .. When om te controleren of points zijn meer dan 10 voor een bepaalde rij, en dienovereenkomstig tellen (met behulp van Sum() ).

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

In MySQL kunnen we het verder inkorten als Sum() functie kan eenvoudig resultaten van voorwaardelijke operators/functies casten naar 0/1 (voor respectievelijk onwaar/waar):

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


  1. MySQL:groeperen op datum BEREIK?

  2. Waarom heeft PostgreSQL gebruikers en groepen samengevoegd tot rollen?

  3. Getypte resultaten ophalen uit ActiveRecord onbewerkte SQL

  4. Update meerdere kolommen in MERGE-instructie ORACLE