Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Policz liczbę użytkowników w określonym przedziale wiekowym na podstawie daty urodzenia

Przekształć datę urodzenia na nazwę zakresu, a następnie pogrupuj ją z liczbą:

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

Korzystając z podzapytania do konwersji daty urodzenia na zakres, obliczenie należy wykonać tylko raz na wiersz, więc powinno działać lepiej. I jest łatwiejszy do odczytania.

Ponadto, unikając UNION, zapytanie może zostać wykonane w jednym przejściu nad tabelą.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. =* operator w sql

  2. Tożsamość SQL (autonumber) jest zwiększana nawet po wycofaniu transakcji

  3. Aktualizacja T-SQL z SUM i Group BY

  4. Nie możesz przestawić tabeli z moim zapytaniem?

  5. Co robi to zapytanie, aby utworzyć listę rozdzielaną przecinkami w programie SQL Server?