Ubah tanggal lahir menjadi nama rentang, lalu buat grup dengan menghitungnya:
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
Dengan menggunakan subquery untuk mengonversi tanggal lahir menjadi rentang, penghitungan hanya perlu dilakukan sekali per baris, sehingga performanya akan lebih baik. Dan lebih mudah dibaca.
Selain itu, dengan menghindari UNION, kueri dapat dieksekusi dalam satu kali melewati tabel.