And then the query:
select b.name, nvl(amt,0) emps from ( -- the two columns you want to show, with an alias on the count column
select count(1) amt, divisions.name -- the two columns you want to show
from divisions, employee -- the tables included in the query
where employee.division_id = divisions.divisionid -- joining the two tables so we know which employees are connected to the divisions
group by divisions.name -- need to group on something when doing a count
) a, divisions b -- putting an alias on the subquery, and joining the results from that with divisions again
where a.name(+) = b.name -- left outer join between the subquery and the divisions table to get all divisions, regardless of count
order by emps desc, -- order by amount of employees (emps) descending order
b.name asc; -- and names in ascending order, to get the list in your desired way
The query does grow a bit once you require to show empty divisions, but I guess it prevents stupid questions like (where are the other divisions?) etc.
Hope this helps