sql >> Databáze >  >> RDS >> Sqlserver

Počet uživatelů v určitém věkovém rozmezí podle data narození

Převeďte datum narození na název rozsahu a poté vytvořte skupinu podle toho s 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

Při použití dílčího dotazu k převodu data narození na rozsah stačí výpočet provést pouze jednou na řádek, takže by měl fungovat lépe. A je snazší číst.

Také tím, že se vyhneme jednotkám UNION, lze dotaz provést jedním průchodem přes tabulku.



  1. Více verzí SQL Server pomocí Entity Framework v jedné aplikaci ASP.NET

  2. Jak čtete sloupec XML v SQL Server 2008?

  3. Schéma databáze pro ACL

  4. mysql vyhledejte catid v textovém poli