sql >> Databasteknik >  >> RDS >> Sqlserver

Räkna antalet användare i en viss åldersintervall baserat på födelsedatum

Konvertera födelsedatumet till ett intervallnamn och gör sedan en grupp över det med 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

Genom att använda en underfråga för att konvertera födelsedatumet till ett intervall behöver beräkningen bara utföras en gång per rad, så den borde fungera bättre. Och det är lättare att läsa.

Genom att undvika UNION kan frågan också köras i en gång över tabellen.



  1. Eclipse - lägg till .jar i Dynamic Web Project

  2. Git-tips och bästa praxis för nybörjare

  3. hur kan jag ställa in data från databasen i kryssrutan med hjälp av formuläret i zend framework 1.11

  4. Hur migrerar jag ny MySQL-databasstruktur från dev till produktionswebbplats med hjälp av kommandoraden?