सबसे पहले, आपकी उम्र की गणना गलत है। आप लगभग निश्चित रूप से दो तिथियों के बीच के महीनों को मापना चाहते हैं, बजाय इसके कि 365.25 से विभाजित करना काफी करीब है
trunc( months_between( sysdate, p.birth_date )/ 12 )
दूसरा, यदि आप श्रेणियों के आधार पर समूह बनाना चाहते हैं, तो आपको बस case
. में श्रेणी का चयन करना होगा उसके द्वारा कथन और समूह
SELECT (case when age <= 5
then 'age <= 5'
when age > 5 and age <= 10
then 'age > 5 and age <= 10'
else 'age > 10'
end) bucket,
count(*)
FROM( SELECT trunc( months_between( sysdate, p.birth_date )/ 12 ) age
FROM person p )
GROUP BY (case when age <= 5
then 'age <= 5'
when age > 5 and age <= 10
then 'age > 5 and age <= 10'
else 'age > 10'
end)