Frequency distribution with percentages
Requires two-passes over the data
create or replace view totname (totname_total)
as
(select count(*)
from name
where name_seriesno = name_now(name_id));
select person_gender "sex",
count(*) "count",
round(100*count(*)/totname_total,0) "pct"
from person,
name,
totname
where name_seriesno = name_now(name_id)
and person_id = name_id
group by person_gender,
totname_total
order by 1;
sex count pct
--- ---------- ----------
F 3 50
M 2 33
1 17
---------- ----------
sum 6 100