sql >> Database teknologi >  >> RDS >> Sqlserver

Antal brugere i en bestemt aldersgruppe er baseret på fødselsdato

Konverter fødselsdatoen til et områdenavn, og lav derefter en gruppe efter over det med antal:

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

Ved at bruge en underforespørgsel til at konvertere fødselsdatoen til et interval, skal beregningen kun udføres én gang pr. række, så den skulle fungere bedre. Og det er nemmere at læse.

Ved at undgå UNIONs kan forespørgslen også udføres i én gang over tabellen.



  1. Hvorfor virker dette valg til opdateringseksempel?

  2. Parse fejl:syntaks fejl, uventet '=' fejl

  3. Forskellen mellem to år måned og dag værdier i Oracle

  4. postgresql - kan ikke oprette database - OperationalError:kildedatabaseskabelon1 bliver tilgået af andre brugere