Chuyển đổi ngày sinh thành một tên phạm vi, sau đó thực hiện một nhóm theo số đó với số lượng:
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
Bằng cách sử dụng truy vấn con để chuyển đổi ngày sinh thành một phạm vi, phép tính chỉ cần được thực hiện một lần cho mỗi hàng, do đó, nó sẽ hoạt động tốt hơn. Và nó dễ đọc hơn.
Ngoài ra, bằng cách tránh các UNION, truy vấn có thể được thực hiện trong một lần chuyển qua bảng.