select s, sum(cnt) from (
select substr(name,1,1) s , count(*) cnt from x
group by substr(name,1,1)
select substr(alph,z.r,1) s , 0 cnt
from ( select 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' alph from dual ) y ,
( select rownum r from tab where rownum <= 52 ) z
group by s
Assumption : You should have atleast 52 tables in your schema. The sql is basically very simple. The select which is below union all outputs all the 52 alphabets with zeroes like this.
The sql ( from vbaskar ) is combined with this with an union all and the counts are summed up.