Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Пребройте броя на потребителите в диапазона на определена възраст въз основа на датата на раждане

Преобразувайте рождената дата в име на диапазон, след което направете групиране върху това с 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

Чрез използване на подзаявка за преобразуване на датата на раждане в диапазон, изчислението трябва да се извършва само веднъж на ред, така че трябва да работи по-добре. И е по-лесно за четене.

Освен това, чрез избягване на UNIONs, заявката може да бъде изпълнена с едно преминаване през таблицата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете повече от две таблици хоризонтално в SQL Server

  2. Версиониране на база данни на SQL Server

  3. Ескалация на заключване на SQL сървър

  4. Вземете AVG, пренебрегвайки Null или Zero стойности

  5. SQL Cross Tab Query