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

Compter le nombre d'utilisateurs dans une certaine tranche d'âge en fonction de la date de naissance

Convertissez la date de naissance en un nom de plage, puis faites un groupe par dessus avec count :

select
  case when age < 18 then 'Under 18'
       when age > 50 then  'Over 50'
       else  '18-50' end as range,
  count(*) as count
from (select DATEDIFF(yy, user_dob, GETDATE()) as age from Customer) c
group by case when age < 18 then 'Under 18'
   when age > 50 then  'Over 50'
   else  '18-50' end

En utilisant une sous-requête pour convertir la date de naissance en une plage, le calcul ne doit être effectué qu'une seule fois par ligne, il devrait donc être plus performant. Et c'est plus facile à lire.

De plus, en évitant les UNION, la requête peut être exécutée en un seul passage sur la table.