Использовать функцию усечения с правильным форматированием даты:
select 10*trunc(to_char(DOB,'yyyy')/10) "Decade", count(1) "No_of_customers"
from tab
group by 10*trunc(to_char(DOB,'yyyy')/10)
order by 1;
Я недавно понял, что вы последний раз редактировали. В связи с этим вы можете использовать следующее:
with t as
(
select trunc(to_date(10*trunc(to_char(DOB,'yyyy')/10),'yyyy'),'year') Decade_Start,
trunc(to_date(10*ceil(to_char(DOB,'yyyy')/10),'yyyy'),'year')-1 Decade_End
from tab
)
select t.*, count(1) No_of_customers
from t
group by Decade_Start, Decade_End
order by 1;
Демонстрация SQL Fiddle