sql >> Database >  >> RDS >> Sqlserver

Tel het aantal gebruikers in het bereik van een bepaalde leeftijd op basis van geboortedatum

Converteer de geboortedatum naar een bereiknaam en voer vervolgens een groep uit met het aantal:

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

Door een subquery te gebruiken om de geboortedatum naar een bereik te converteren, hoeft de berekening maar één keer per rij te worden uitgevoerd, dus het zou beter moeten presteren. En het is gemakkelijker te lezen.

Door UNION's te vermijden, kan de query ook in één keer over de tafel worden uitgevoerd.



  1. Hoe een primaire sleutel opnieuw ordenen?

  2. Bronbeheer en opgeslagen procedures

  3. Berichten van abonnees en eigen berichten van gebruikers weergeven

  4. SQL- Haal de subtekenreeks na de eerste spatie en de tweede spatie in afzonderlijke kolommen